ID stone_free original_stone_id
------- | ---------- | -------------------
1 | 0 | 1
2 | 1 | 2
3 | 1 | 1
只有当 stone_free 等于 0 并且每行的其他行中没有相应的 original_stone_id 时,我才想从表中返回行 .因此,例如在上面的示例中,第 1 行的 stone_free 为 0,并且第 3 行中有相应的 original_stone_id,因此查询不应返回任何行。
在下面的示例中,第 1 行的 stone_free 为 0,但另一行中没有相应的 original_stone_id,因此查询应返回第 1 行。
ID stone_free original_stone_id
------- | ---------- | -------------------
1 | 0 | 1
2 | 1 | 2
最佳答案
一个简单的 LEFT JOIN
就可以做到;
SELECT a.*
FROM Stones a
LEFT JOIN Stones b ON a.ID<>b.ID AND a.original_stone_id = b.original_stone_id
WHERE b.ID IS NULL AND a.stone_free=0
演示 here .
关于MySQL 查询行,仅当行项在其他行中不存在时才返回行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11915135/