sql - 使用 SQL 排除记录

标签 sql ms-access

所以我有一个包含 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/

相关文章:

sql - 将一个表中的值更新到另一个表中

mysql - MySql 中的 While 循环

sql - 调用函数的 MS Access 更新查询不返回任何内容/更新字段

database - MS Access 将多个字段外连接到单个记录

ms-access - 根据数量字段重复记录

mysql - 选择一个类别中的所有书籍,但属于其他类别的书籍除外

sql - 如何在 Presto 中转义单引号?

mysql - 具有多个表的时间戳按天分组

sql-server - 在 MS Access 中在 nvarchar 中插入 NULL 失败

mysql - 如何将 Access 2003 数据库链接到 MySQL 数据库