sql - 如何在 SQL 中排除内部查询的结果?
问题描述
我正在尝试排除 SQL 中的内部查询的结果(我目前正在使用 Google 的云平台),我有下表:
date | name
-----------+------------
2019-09-10 | gas_300x10
2019-09-10 | gas_250x10
2019-09-10 | gas_3x3
2019-09-11 | gas_300x10
2019-09-11 | gas_250x10
2019-09-11 | gas_4x4
我试图仅在 2019 年 9 月 10日排除名称等于gas_300x10 和 gas_250x10的值!
我想保留该日期的其他值,也想保留gas_300x10 和 gas_250x10在其他日子发生的位置,例如 2019-09-11 日。
我有以下查询,它排除了我不想要的日期的值- 所以我不想要 2019-09-10 的这两个值:
SELECT *
FROM my_table
WHERE date = '2019-09-10'
AND (name = 'gas_300x10' OR name = 'gas_250x10')
这个查询本质上会返回那些我不想要的值——我怎样才能将它嵌入到一个内部查询中,以便将这些结果从其余数据中排除?
我尝试使用EXCEPT
andNOT IN
作为子查询,但没有找到任何运气!
我认为代码会这样工作,但我不确定:
SELECT *
FROM my_table
EXCEPT
SELECT *
FROM my_table
WHERE date = '2019-09-10'
AND (name = 'gas_300x10' OR name = 'gas_250x10')
解决方案
使用组合表达式:
select *
from mytable
where not (date = date '2019-09-10' and name in ('gas_300x10', 'gas_250x10'));
或者
select *
from mytable
where date <> date '2019-09-10' or name not in ('gas_300x10', 'gas_250x10');
推荐阅读
- excel - 嵌套直到只工作 1 次
- c# - 无法引用文件名中带有空格的块 blob
- firebase-realtime-database - 颤振火力线操作
- laravel - 获取空结果时使用 Eloquent 的 toArray 时如何避免错误
- java - 在关闭 GPS 的情况下打开应用程序时无法获取 GPS 当前位置
- css - 如何强制 Internet Explorer 11 正确显示图像纵横比?
- c# - SQL 多个会议给一个用户,反之亦然
- powershell - 如何将一个对象添加到另一个对象的值
- python - 在 tkinter 按钮回调中传递 lambda 中的对象
- windows - 如何在两个日期和时间时间戳之间执行算术(加、减)?