【发布时间】:2012-10-05 05:04:20
【问题描述】:
我有两个表A 和B,A 通过字段B 引用A.id_b B.id,因此B.id 中存在任何id_b 值。
我有三个问题: 第一个:
SELECT COUNT(b.id)
FROM B b
WHERE b.id NOT IN (
SELECT a.id_b
FROM A a)
它给了我0;
第二个,区别只在NOT:
SELECT COUNT(b.id)
FROM B b
WHERE b.id IN (
SELECT a.id_b
FROM A a)
这个查询给了我:1899
第三个:
SELECT COUNT(b.id)
FROM B b
这个查询给了我3599
结果相同:
SELECT a.id_b
FROM A a
保证我将 B.id 拆分为两组,并且两组中的元素数必须是总元素数,但我有:1899 + 0 != 3599。
怎么可能?
【问题讨论】:
-
是的,独一无二。首要的关键。和 A.id_b id 外键,具有 NOT NULL 约束。
-
旁注:最后一个查询没有
COUNT函数。是故意的吗? -
不,这只是前两个查询的子查询。
-
而不是编辑问题。您应该(必须)添加您自己的答案并接受它。
-
没想到我能回答我自己的问题...谢谢。
标签: postgresql where-in