我有一个包含唯一ID字段的表。另一个字段(REF)包含对另一个数据集ID字段的引用。 现在我必须选择REF指向不存在的数据集的所有数据集。如何在选择中进行选择
SELECT * FROM table WHERE ("no dataset with ID=REF exists")
我该怎么做?
我有一个包含唯一ID字段的表。另一个字段(REF)包含对另一个数据集ID字段的引用。 现在我必须选择REF指向不存在的数据集的所有数据集。如何在选择中进行选择
SELECT * FROM table WHERE ("no dataset with ID=REF exists")
我该怎么做?
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
参见Five ways to return all rows from one table which are not in another table
SELECT *
FROM table
WHERE ((SELECT COUNT(*) FROM table2 WHERE table2.id = table.ref) = 0)
我认为这应该工作
SELECT * FROM table WHERE id NOT IN (SELECT ref_id FROM ref_table)
或JOIN
SELECT table.*
FROM table LEFT JOIN ref_table ON table.id = ref_table.ref_id
WHERE ref_table.ref_id IS NULL
将无法工作,如果你有NULL值 – SQLMenace 2009-04-17 15:50:55
你可以做一个子查询:
select * from table where somefield not in (select otherfield from sometable where ID=REF)
你不能在某些领域(选择* ...作为一个字段不能评估到很多 – cjk 2009-04-17 15:48:47
试试这个:
SELECT * FROM TABLE WHERE NOT EXISTS
(SELECT * FROM OtherTable WHERE TABLE.Ref = OtherTable.ID)
Table.ref = othertable.id – Jimmy 2009-04-17 15:47:08
类似的东西:
SELECT * FROM table WHERE ID NOT IN(SELECT REF FROM Table2)
SELECT
table1.*
FROM
table1
LEFT JOIN table2 ON table1.id = table2.ref
WHERE
table2.ref IS NULL
SELECT Table1。* .. – cjk 2009-04-17 15:49:25
+1, – 2009-04-17 15:53:34
哟耶我从众üliek选择,所以我们把选择在乌拉圭回合选择这样当你查询可以查询。
是的,你可以使用
SELECT * FROM x,其中不存在(SELECT * FROM Y)
哈哈哈! -2分,我很高兴至少代码能够工作,即使它不是最好的,否则谁知道多少分! – antonioh 2009-04-17 16:03:44