mysql - SQL : Replace integer with string when there is empty value

标签 mysql sql database database-design

我正在做的事情与这个 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/

相关文章:

python - Django - 有什么方法可以立即获取外键对象?

javascript - 在 JavaScript 中,Sproutcore 查询数据库的返回类型是什么?

java - Android SQLite 游标错误

php - 使用 SSH 导入 SQL

mysql - 创建用户到组的映射,并根据用户组合获取组

php - 可执行文件有更多数据要发送,但不知道如何向可执行文件发送信号,表明已发送的数据已处理并准备好下一个 block

mysql - 如何处理数据库中的子类别?

mysql - 候选键/减少

php - 有什么方法可以知道需要多少缓存大小?

java - MYSQL 更新表不适用于 Java 实现