Какое-то условие IF во ВСТАВКЕ

#sql #postgresql

Вопрос:

У меня есть следующие столы:

    table1               table2
id. value position    id   state
                       1.  false
 

Что мне нужно, так это вставить данные в таблицу 1, если состояние из таблицы 2 верно.
Что-то вроде:

 INSERT INTO table1(value, position)
VALUES('someVal', 3)
IF table2.id = 1 AND table2.state = true
 

Комментарии:

1. Являются ли данные, которые вы хотите вставить, формой таблицы3? Кроме того, это для одного выстрела или что-то, что будет частью более масштабного процесса и может быть использовано повторно?

Ответ №1:

Ты хочешь exists ?

 INSERT INTO table1(value, position)
    SELECT v.value, v.position
    FROM (VALUES('someVal', 3)) v(value, position)
    WHERE EXISTS (SELECT 1 FROM TABLE2 t2 WHERE t2.id = 1 AND t2.state = true);
 

Ответ №2:

Вы можете выбрать только элемент, где table2.State = true, перед вставкой

Если бы ваши данные поступали из другой таблицы, это выглядело бы так

 INSERT INTO table1(value, position)
SELECT ValueId, Value 
FROM TableValue
INNER JOIN Table2
ON TableValue.ValueID = Table2.ID
WHERE table2.state = true