【发布时间】:2015-08-12 11:40:02
【问题描述】:
我不明白为什么下面的 SELECT 会找到 7065 条记录,但更新说它更新了 13935 条记录,这是表中的每条记录。
谁能说明原因?
superfrr=# select count(*) from fromemailaddress LEFT JOIN email ON
(email.fromemailaddress = fromemailaddress.fromemailaddress)
WHERE LOWER(email.subject) ~ 'tester';
count
-------
7065
但是:
superfrr=# update fromemailaddress set call=true from fromemailaddress
as fea LEFT JOIN email ON (email.fromemailaddress = fea.fromemailaddress)
WHERE LOWER(email.subject) ~ 'tester';
UPDATE 13935
【问题讨论】:
-
也许
count不包含空值? -
@EMett
COUNT(*)包括所有内容,包括NULL值以及如果一行完全包含NULL值(example SQLFiddle) -
请用您正在使用的数据库标记您的问题。
-
尝试
update FEA而不是update fromemailaddress- 更新了多少行? :) -
如果要将条件应用于第二个表,为什么要使用 LEFT JOIN?直接使用INNER JOIN不是更直接吗?除此之外,我从未在 UPDATE 语句中使用 JOIN(但我更习惯于 Oracle,并使用 EXISTS / IN 子句处理这些情况)
标签: sql postgresql join sql-update