Cla*_*diu 7 sql postgresql insert-update
我正在使用一些代码.有几个查询的效果是,如果行中存在一些数据,则该行将使用其余数据进行更新,如果该行不存在,则会创建一个新行.它们看起来像这样:
INSERT INTO table_name (col1, col2, col3) SELECT %s AS COL1, %s AS COL2, %s AS COL3 FROM ( SELECT %s AS COL1, %s AS COL2, %s AS COL3 ) A LEFT JOIN table_name B ON B.COL1 = %s AND B.COL2 = %s --note: doesn't mention all columns here WHERE B.id IS NULL LIMIT 1
我可以模仿这种模式,它似乎有效,但我对幕后的实际情况感到困惑.任何人都可以阐明这实际上是如何运作的吗?我正在使用PostgreSQL.
您确定仅使用那段代码进行更新吗?
所发生的事情是,您正在与 table_name (插入新记录的表)进行左连接,并仅过滤该表中不存在的行。(其中 B.id 为空)
就像做“不存在”一样,只是方式不同。
希望我的回答能够对您有所帮助。
问候。
| 归档时间: |
|
| 查看次数: |
975 次 |
| 最近记录: |