sql - 无重复联合或连接查询
问题描述
我尝试编写一个查询来选择两个表中的对象。第一个是 id 列表,第二个是这个 id 和一个具有特定值的字段。我想显示我所有的 id 和特定值,即使它在第一个表中是空的。当然我不想要重复的结果。
我试过加入、联合、选择不足,但我的 id 字段总是重复。默认情况下,在 SQLUNION
中是不同的,因此它可以解决问题,但我不知道如何合并这两个查询而不会在 id 上重复。
一些代码,在 id 上有重复:
SELECT a.id, 'null' AS value
FROM tableA a
UNION
SELECT b.id, b.value
FROM tableB b;
使用条件编辑:
SELECT a.id, 'null' AS value
FROM tableA a
UNION
SELECT b.id, b.value
FROM tableB b
WHERE b.idtype = 1;
解决方案
我认为您正在寻找left join
:
select
ta.id,
tb.value,
case when tb.id is null then 'Table A' else 'Table B' end source
from tablea ta
left join tableb tb on ta.id = tb.id
推荐阅读
- python - 在新 Django 上更改哈希密码的最佳方法是什么?
- java - 182. JavaFX Hello World Program -- Try 3 -- java: cannot find symbol symbol: class GridPane location: class sample.Main
- c# - 在 C# 中使用类方法的实例方法作为委托而不是静态类函数作为委托有什么好处?
- scala - Scala语法规范不匹配if-else与一行表达式以分号结尾?
- vuelidate - 与 Vue 3 一起使用时出现 Vuelidate TypeError
- django - DRF 在视图集或序列化程序中创建方法
- php - 在数组中搜索或比较值
- c - FFMPEG libx265 编码在 avcodec_free_context 后未释放内存
- .net - BizTalk 中的 ISO schematron 验证有哪些替代方法?
- php - 使用相同的项目简化 PHP 数组