所以我有一个包含 10 条记录的表。
SELECT * FROM Komponens WHERE fkod = "SO"
它给了我一个大约有 5 条记录的表。但我想要没有那 5 条记录的结果。
例如:
fkod kkod
SU AA
SU AC
SA AB
CI AC
CI AA
fkod 是香料的名称(SU - 糖,SA - 盐,CI - 肉桂),kkod 是香料混合物的名称。我的糖用完了,我想展示我可以创造的混合物,因为它们不需要糖(在这种情况下只是 SA
- AB
).
如果我使用 SELECT * FROM Komponens WHERE fkod != "SU"
我得到 AB、AC 和 AA。
如何用SQL解决?
最佳答案
SELECT * FROM Komponens WHERE (fkod <>"SO") or (fkod is null)
根据添加的解释,acatt 的答案是正确的,用 fkod = SU 识别 kkod,然后识别 kkod 在该集合之外的行。
我能想到的编写 SQL 的唯一其他方法是:
SELECT k.*
FROM Komponens k left outer join
(select kkod from Komponens WHERE fkod = "SU" group by kkod) l
on k.kkod = l.kkod
where l.kkod is null
关于sql - 使用 SQL 排除记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12691545/