sql - postgresql 条件插入值
问题描述
我需要一个执行以下工作的 SQL。
- INSERT INTO table_1 (column1, column2, column3) 值 (:1,:2, :3)
- 此插入仅在另一个条件为 TRUE 时发生,
条件为:
SELECT 1 FROM table_2 WHERE column_time = 'time_stamp'
Table_1 和 table_2 没有任何关系。只有在 Table_2 上的查询返回 TRUE(1) 时,才会向 table_1 插入值
所以我尝试编写我的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
推荐阅读
- python-3.x - Sphinx 文档和指向 Markdown 的链接
- python - Keras 中的量化支持
- javascript - JavaScript 意外标识符错误代码
- python - Snowflake - 如何使用 NodeJS 连接到 Snowflake
- c - 比较字节数组时出现 Malloc 错误
- python - Tensorflow,更改占位符并传递值
- javascript - 浮动图时间未格式化
- android - 多个活动并将结果放在最后一个活动上
- angular - Angular 5 scrollspy 或页面滚动功能 - 跳转到模态部分的问题
- python-3.x - 如何使 Plotly Dash 日期选择器范围和按钮工作