我正在使用一些代码.有几个查询的效果是,如果行存在并填充了一些数据,那么该行将使用其余数据进行更新,如果该行不存在,则会创建一个新行.它们看起来像这样:
INSERT INTO table_name (col1,col2,col3) SELECT %s AS COL1,%s AS COL2,%s AS COL3 FROM ( SELECT %s AS COL1,%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(插入新记录的表)进行左连接,并仅对该表中不存在的行进行过滤. (WHERE B.id IS NULL)
就像做“不存在”,只是以不同的方式.
我希望我的回答可以帮到你.
问候.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。