Sql 获取查询结果的对立面
我正在尝试创建一个查询,该查询与另一个查询显示相反的内容,就像布尔值一样。 这是第一个查询:Sql 获取查询结果的对立面,sql,ms-access,Sql,Ms Access,我正在尝试创建一个查询,该查询与另一个查询显示相反的内容,就像布尔值一样。 这是第一个查询: SELECT RoomNumber, StructureNumber FROM TimeTables WHERE HourNumber = 1 AND DayNumber = 1 我需要获取该查询结果中不存在的所有行。 第一次我试图从第一个查询中减去完整的表,但我无法做到,因为在Access和 另外,因为我需要在四列之间进行减法,所以该表中有两个主键列 这是我第一次尝试失败: SELECT Room
SELECT RoomNumber, StructureNumber
FROM TimeTables
WHERE HourNumber = 1 AND DayNumber = 1
我需要获取该查询结果中不存在的所有行。
第一次我试图从第一个查询中减去完整的表,但我无法做到,因为在Access和
另外,因为我需要在四列之间进行减法,所以该表中有两个主键列
这是我第一次尝试失败:
SELECT RoomNumber, StructureNumber
FROM TimeTables
EXCEPT
SELECT RoomNumber, StructureNumber
FROM TimeTables
WHERE HourNumber = 1 AND DayNumber = 1
SELECT RoomNumber, StructureNumber
FROM TimeTables
WHERE NOT EXISTS(
SELECT RoomNumber, StructureNumber
FROM TimeTables
WHERE HourNumber = 1 AND DayNumber = 1)
在第二次尝试提取第一次查询中不存在但也不起作用的结果时:
SELECT RoomNumber, StructureNumber
FROM TimeTables
EXCEPT
SELECT RoomNumber, StructureNumber
FROM TimeTables
WHERE HourNumber = 1 AND DayNumber = 1
SELECT RoomNumber, StructureNumber
FROM TimeTables
WHERE NOT EXISTS(
SELECT RoomNumber, StructureNumber
FROM TimeTables
WHERE HourNumber = 1 AND DayNumber = 1)
我在互联网上搜索了一些解决方案,发现了一些与我的问题类似的问题,但没有一个对我有效。不存在需要参考您尚未提供的外部查询
因此,您的不存在应为:
SELECT t.*
FROM TimeTables t
WHERE NOT EXISTS (SELECT 1
FROM TimeTables t1
WHERE t1.RoomNumber = t.RoomNumber and t1.StructureNumber = t.StructureNumber and
t1.HourNumber = 1 AND t1.DayNumber = 1
);
但是,例如where子句只需将NOT EXISTS子查询与主查询关联起来,并使用表别名t和sub:
但只需运行WHERE子句,颠倒逻辑即可:
SELECT t.*
FROM TimeTables t
WHERE t.HourNumber <> 1 OR t.DayNumber <> 1
我想这正是你想要的:
SELECT RoomNumber, StructureNumber
FROM TimeTables
GROUP BY RoomNumber, StructureNumber
HAVING SUM(IIF(HourNumber = 1 AND DayNumber = 1, 1, 0)) = 0;
HAVING子句统计符合指定条件的每个RoomNumber/StructureNumber组合的行数。=0表示没有这样的行。此查询提供了我想要的完美结果,非常感谢。但是你能解释一下这个问题是怎么回事吗?我不知道IFF函数,也不明白你用求和的方法。