sql - SQL除了选择两个表中的列数不同
问题描述
我有两个 SQL 表,它们都有三列
普通的
val_one, val_two, bool_val
1, 2, False
3, 4, False
温度
val_one, val_two, bool_val
1, 2, True
我有一个 SQL 语句,可以从另一个表中不存在的行中选择所有行。
"SELECT val_one, val_two, bool_val FROM temp EXCEPT SELECT val_one, val_two, bool_val FROM normal;"
但是,这有一个问题,它还返回具有不同布尔值的行,这不是我想要的。因此,如果我查询,我只想取回具有不同 (val_one, val_two) 值的行
在此示例中,我的查询理想情况下只返回
3, 4, False
我怎样才能修改当前的语句来做到这一点?
解决方案
使用不存在如下
SELECT val_one, val_two, bool_val FROM normal n
where not exists
(
SELECT 1 FROM temp t where t.val_one=n.val_one and t.val_two=n.val_two
)
DB-小提琴
create table normal(val_one int, val_two int, bool_val varchar(10));
insert into normal values(1, 2, False);
insert into normal values(3, 4, False);
create table temp(val_one int, val_two int, bool_val varchar(10));
insert into temp values(1, 2, True);
询问:
SELECT val_one, val_two, bool_val FROM normal n
where not exists
(
SELECT 1 FROM temp t where t.val_one=n.val_one and t.val_two=n.val_two
)
输出:
val_one | val_two | 布尔值 |
---|---|---|
3 | 4 | 错误的 |
db<小提琴在这里
推荐阅读
- java - 在 Dialog 中动态添加 Views
- c# - System.ComponentModel.Win32Exception:访问进程路径时拒绝访问
- braintree - 在托管字段中为 Braintree 拱形卡标记 CVV
- xml - 如何使用 (g)awk 提取 xml 属性
- postgresql - 将pdf上传到Postgres的问题
- c# - 如何将复杂类作为参数传递给httpget
- jquery - 如何在 localStorage 中切换和记住 div
- javascript - React-Table 在选择时重新渲染整个表格
- python - 如何从 l=string 中提取 0207 而不是 207?
- apache-drill - 为什么 Apache Drill RDBMS 存储插件中的写访问受到限制?有没有可能的解决方法?