【发布时间】:2016-03-11 08:48:53
【问题描述】:
表acc_account样本数据:
acc_id acc_code parent name
------- --------- ------ ------
1 | aaa | -1 | A |
2 | bbb | CP | B |
3 | ccc | OP | C |
4 | ddd | -1 | D |
acc_code 和 parent 列不相等,对吧?
该表有 411 行,甚至没有任何与 parent 列匹配的 acc_code 记录。
然而,下面的这个查询在应该是全部 411 行时返回 6 行。 谁能解释一下?
查询(返回 6 行):
SELECT *
FROM acc_account a1
WHERE not EXISTS (
SELECT *
FROM acc_account
WHERE acc_account.parent = a1.acc_code
);
【问题讨论】:
-
PostgresqlSQL Server。请正确标记或写下您需要可移植的代码。 -
查询对双方都有效
-
这里有
NULLs 在玩吗? -
显然在其他记录中有
parent等于acc_code的记录。您不是在一条记录中进行比较,而是在整个集合中进行比较。 -
两列内没有
NULLs
标签: sql-server postgresql exists