
[英]undefined index by selecting data from two tables with a common column
[英]SQL Selecting rows from two tables where one column is common but another may be null
我从两个表中进行选择,其中table1 Person具有人员,person_id,姓名等详细信息,并从table2 PersonSong(这是另一个表Song的一对多表)中进行选择,其中具有person_id,song_id。
我有5个人,[1,2,3,4,5]。
每个人可以在PersonSong中播放多首歌曲。
我需要一个查询来显示我要搜索的具有song_id的人员列表,即使该列表为null。
例如
Person PersonSong
person_id name facebookId | person_id song_id
|
1 Bob 123 | 1 5
2 Bill 456 | 1 9
3 Jake 789 | 2 2
4 Mary 951 | 1 10
5 Kate 753 | 2 3
| 3 5
| 4 5
| 5 8
| 5 5
如果我使用person_id = 5进行搜索,答案应该是,
Answer
person_id person facebookId song_id
1 Bob 123 5
2 Bill 456 NULL
3 Jake 789 5
4 Mary 951 5
5 Kate 753 5
我想要一个包含所有人员及其数据的列表,以及他们是否知道当前歌曲ID的指示。
您似乎只想left join
:
select p.*, ps.song_id
from person p left join
personsong ps
on p.person_id = ps.person_id and
ps.song_id = 5;
您可以尝试使用子查询,即使没有连接到表PersonSong的情况下,它也将允许您获取Person的完整列表
SELECT
p.person_id, p.name, p.facebookId,
(SELECT
song_id
FROM
PersonSong ps
WHERE
ps.person_id = p.person_id
AND ps.song_id = 5 LIMIT 1) as song_id
FROM
Person p
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.