postgresql 条件插入值
postgresql conditionnal insert values
我需要一个 SQL 来完成以下工作。
- 插入 table_1 (column1, column2, column3) VALUES (:1,:2, :3)
- 只有当另一个条件为真时才会发生此插入,
条件是:
SELECT 1 来自 table_2 其中 column_time = 'time_stamp'
Table_1 和 table_2 没有任何关系。只有在 Table_2 return TRUE(1)
上的查询才应该发生 table_1 的 INSERT 值
所以我尝试将我的SQL写成如下
INSERT INTO table_1 (column1, column2, column3) VALUES (:1,:2, :3)
WHERE EXISTS (SELECT 1 FROM table_2 WHERE column_time = 'time_stamp')
ON CONFLICT DO NOTHING
但是,这 SQL 不起作用,因为 Postgresql 看起来不像 INSERT 与 WHERE 条件相结合。
顺便说一句:值 (:1, :2:, :3) 是绑定数组值。最终的 SQL 看起来像这样:
INSERT INTO table_1 (column1, column2, column3) VALUES ('ca_1','cb_1', 'cc_1') ('ca_2','cb_2', 'cc_2') ... ('ca_n','cb_n', 'cc_n') WHERE EXISTS (SELECT 1 FROM table_2 WHERE column_time = 'my_time_stamp') ON CONFLICT DO NOTHING
真的需要帮助谢谢。
您需要 select
这些值。
这适用于 Postgres:
INSERT INTO table_1 (column1, column2, column3)
SELECT :1, :2, :3
WHERE EXISTS (SELECT 1 FROM table_2 WHERE column_time = 'time_stamp')
ON CONFLICT DO NOTHING
或者:
INSERT INTO table_1 (column1, column2, column3)
SELECT x.*
FROM (VALUES (:1, :2, :3)) AS x(column1, column2, column3)
WHERE EXISTS (SELECT 1 FROM table_2 WHERE column_time = 'time_stamp')
ON CONFLICT DO NOTHING
我需要一个 SQL 来完成以下工作。
- 插入 table_1 (column1, column2, column3) VALUES (:1,:2, :3)
- 只有当另一个条件为真时才会发生此插入,
条件是:
SELECT 1 来自 table_2 其中 column_time = 'time_stamp'
Table_1 和 table_2 没有任何关系。只有在 Table_2 return TRUE(1)
上的查询才应该发生 table_1 的 INSERT 值所以我尝试将我的SQL写成如下
INSERT INTO table_1 (column1, column2, column3) VALUES (:1,:2, :3)
WHERE EXISTS (SELECT 1 FROM table_2 WHERE column_time = 'time_stamp')
ON CONFLICT DO NOTHING
但是,这 SQL 不起作用,因为 Postgresql 看起来不像 INSERT 与 WHERE 条件相结合。
顺便说一句:值 (:1, :2:, :3) 是绑定数组值。最终的 SQL 看起来像这样:
INSERT INTO table_1 (column1, column2, column3) VALUES ('ca_1','cb_1', 'cc_1') ('ca_2','cb_2', 'cc_2') ... ('ca_n','cb_n', 'cc_n') WHERE EXISTS (SELECT 1 FROM table_2 WHERE column_time = 'my_time_stamp') ON CONFLICT DO NOTHING
真的需要帮助谢谢。
您需要 select
这些值。
这适用于 Postgres:
INSERT INTO table_1 (column1, column2, column3)
SELECT :1, :2, :3
WHERE EXISTS (SELECT 1 FROM table_2 WHERE column_time = 'time_stamp')
ON CONFLICT DO NOTHING
或者:
INSERT INTO table_1 (column1, column2, column3)
SELECT x.*
FROM (VALUES (:1, :2, :3)) AS x(column1, column2, column3)
WHERE EXISTS (SELECT 1 FROM table_2 WHERE column_time = 'time_stamp')
ON CONFLICT DO NOTHING