我正在做的事情与这个 SO 线程(link)非常相似。不同之处在于我的表有时有空值。这是我提供的链接后的下图。
1) 表 'people' 包含最喜欢的运动的人列表
ID | Name | FavSport | DislikeSport
------------------------------------
1 | Bob | 1 | 5
2 | Roy | 3 | 4
3 | Sarah | |
4 | Kevin | 2 |
5 | Mary | | 3
2) 显示运动列表的“sports”表
ID | Sport
---------------
1 | Football
2 | Basketball
3 | Volleyball
4 | Soccer
5 | Badminton
我从我在此线程中发布的链接中获得的查询
select people.Name, sports.Sport
from people, sports
where people.FavSport = sports.ID
3) 查询结果与上面类似
Name | Sport | Dislike
----------------------------
Bob | Football | Badminton
Roy | Volleyball | Soccer
Sarah | Football | Football
Kevin | Basketball | Football
Mary | Football | Volleyball
4) 我想要的是空的,如下所示(或任何默认值,如:nothing)
Name | Sport | Dislike
----------------------------
Bob | Football | Badminton
Roy | Volleyball | Soccer
Sarah | |
Kevin | Basketball |
Mary | | Volleyball
谁能解决这个问题?提前致谢。
最佳答案
你需要一个外连接
select people.Name,
likes.Sport as FavSport ,
dislikes.Sport as DislikeSport
from people
left join sports likes
on people.FavSport = likes.ID
left join sports dislikes
on people.DislikeSport = dislikes.ID
JOIN 的标准文档
关于mysql - SQL : Replace integer with string when there is empty value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45344802/