mysql - 用于连接两个表并表示不匹配的空值的 Sql 查询
问题描述
我有 2 张桌子
表格1:
id|name1
-----
1|Tom
2|Tom
表 2:
id|name2
-----
1|Tom
1|Lucy
1|Frank
2|Tom
2|John
我使用的代码:
select a.id,a.name,b.name from table1 a
join table 2 b
on a.id=b.id
group by 1,2,3;
我得到的输出:
id|name1|name2
1|Tom|Tom
1|Tom|Lucy
1|Tom|Frank
2|Tom|Tom
2|Tom|John
我想要的输出:
id|name1|name2
1|Tom|Tom
1|Null|Lucy
1|Null|Frank
2|Tom|Tom
2|Null|John
一个简单的左连接在这里不起作用我试图为没有匹配项获取空值。我正在使用 MySQL 8.0 你可以在这里工作你的代码:
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=b389d8e94b4b2f4e6188ca8e833b6d6f
谢谢。
解决方案
你需要left join
一个table2
to table1
:
select t2.id, t1.name1, t2.name2
from table2 t2 left join table1 t1
on t1.name1 = t2.name2 and t2.id = t1.id
请参阅演示。
结果:
> id | name1 | name2
> -: | :---- | :----
> 1 | Tom | Tom
> 1 | null | Lucy
> 1 | null | Frank
> 2 | Jen | Jen
> 2 | null | John
推荐阅读
- python - 如何从 Google Colab 设置 Google Drive 文件的路径?
- r - 正则表达式:在 R 中按特定顺序具有特定位数的数字
- macos - 当您在某个程序中时,有没有办法隐藏菜单栏是 OS X?
- unity3d - 如果它们之间的距离在 Unity 中变得太远,则使用 Lerp 将一个对象移动到另一个对象
- python - 是否可以更改 tensorflow 输出数组?
- wkhtmltopdf - mathjax 断线 wkhtmltopdf
- javascript - 寻找一种有效的方法来返回字符串的一部分
- three.js - 3D 物体仅在相机靠近识别图像时出现;它也部分出现
- javascript - Redux createAsyncThunk vs useEffect hook
- kotlin - 如何实现一个字符串数据容器,并用它用 Kotlin 和 Antlr 添加两个字符串