我有兩個表A
和B
,A
由字段A.id_b B.id
稱爲B
,使得存在於任何B.id
值id_b
。的PostgreSQL:WHERE IN和NOT其中
我有三個疑問:第一 一個:
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)
這個查詢給我:
第三個:
SELECT COUNT(b.id)
FROM B b
這查詢給了我3599
SAME導致:
SELECT a.id_b
FROM A a
保證我兩套劈裂B.id
,並且在這兩組元素的數量必須多元素總量算,但我有:1899年+ 0 = 3599。
這怎麼可能?
表'B'上的'ID'是唯一的嗎? – hims056
是的,獨一無二的。首要的關鍵。和A.id_b id外鍵,帶有NOT NULL約束。 – devdRew
備註:最後一個查詢不具有「COUNT」功能。是故意的嗎? – hims056