如何在选择中选择

Hol*_*rwa 3 sql

我有一个包含唯一ID字段的表.另一个字段(REF)包含对另一个数据集的ID字段的引用.现在我必须选择REF指向不存在的数据集的所有数据集.

SELECT * FROM table WHERE ("no dataset with ID=REF exists")
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

SQL*_*ace 21

3种方式

SELECT * FROM YourTable y WHERE NOT EXISTS 
     (SELECT * FROM OtherTable o WHERE y.Ref = o.Ref)

SELECT * FROM YourTable WHERE Ref NOT IN 
     (SELECT Ref FROM OtherTable WHERE Ref IS NOT NULL)

SELECT y.* FROM YourTable y 
LEFT OUTER JOIN  OtherTable o ON y.Ref = o.Ref
WHERE o.Ref IS NULL
Run Code Online (Sandbox Code Playgroud)

另请参见从一个表中返回不在另一个表中的所有行的五种方法


cjk*_*cjk 6

试试这个:

SELECT * FROM TABLE WHERE NOT EXISTS 
     (SELECT * FROM OtherTable WHERE TABLE.Ref = OtherTable.ID)
Run Code Online (Sandbox Code Playgroud)


Jho*_*re- 5

我认为这应该有效

SELECT * FROM table WHERE id NOT IN (SELECT ref_id FROM ref_table)
Run Code Online (Sandbox Code Playgroud)

或加入

SELECT table.* 
FROM table LEFT JOIN ref_table ON table.id = ref_table.ref_id
WHERE ref_table.ref_id IS NULL
Run Code Online (Sandbox Code Playgroud)