#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