【发布时间】:2019-09-25 04:30:08
【问题描述】:
我在两个不同的模式“schema1”和“schema2”下有相同的表结构,称为“table1”。 “table1”包含列“col1, col2, col3”。最初我想看看在表schema1.table1 和schema2.table1 中是否存在具有col1 和col2 相同条目的记录。但我把schema2.table1 打错了schema1.table1。现在我被查询结果弄糊涂了。
SELECT COUNT(*) FROM schema1.table1 AS s1t, schema1.table1 AS s2t
WHERE s1t.col1 = s2t.col1 AND s1t.col2 = s2t.col2;
我明白了
count
-------
530
(1 row)
但是,SELECT COUNT(*) FROM schema1.table1; 显示有 17815 行。
为什么第一个查询显示只有 530 条满意的记录?不应该是17815吗?
【问题讨论】:
-
今日提示:始终使用现代、明确的
JOIN语法。更容易编写(没有错误),更容易阅读(和维护),并且在需要时更容易转换为外连接。 -
表中有空值吗?此类行将不计入此处。做
select count(*) from schema1.table1 where col1 is null or col2 is null. -
@jarlh 好的,返回的查询结果加上 530 确实加起来 17815...我不知道我不能在 sql 中执行类似
NULL = NULL的操作。 -
例如
select count(*) from table1 where col1 = col1与select count(*) from table1 where col1 is not null相同
标签: sql postgresql