加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

如果存在,或者如果不存在,则此SQL查询如何更新行?

发布时间:2020-12-12 07:08:08 所属栏目:MsSql教程 来源:网络整理
导读:我正在使用一些代码.有几个查询的效果是,如果行存在并填充了一些数据,那么该行将使用其余数据进行更新,如果该行不存在,则会创建一个新行.它们看起来像这样: INSERT INTO table_name (col1,col2,col3)SELECT %s AS COL1,%s AS COL2,%s AS COL3FROM ( SELECT %
我正在使用一些代码.有几个查询的效果是,如果行存在并填充了一些数据,那么该行将使用其余数据进行更新,如果该行不存在,则会创建一个新行.它们看起来像这样:
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)

就像做“不存在”,只是以不同的方式.

我希望我的回答可以帮到你.

问候.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读