user_playlist
-------------
user_id
playlist_id
user
-------------
id
name
playlist
-------------
id
user_id
name
分解来看,播放列表可以是公共(public)的(使用联结表分配给用户)或私有(private)的(通过设置播放列表 user_id 属于用户)。如何在一次选择中查询用户的所有播放列表?这可能吗?
最佳答案
此查询应该会为您提供所需的结果。它通过 user_playlist
(对于公共(public)播放列表)或直接(对于私有(private)播放列表)JOIN
user
到 playlist
:
SELECT DISTINCT p.id, p.name
FROM user u
LEFT JOIN user_playlist up ON up.user_id = u.id
JOIN playlist p ON p.id = up.playlist_id OR p.user_id = u.id
您可以只添加一个适当的WHERE
子句(例如u.id = 4
或u.name = 'bill'
)来选择感兴趣的用户。
关于sql - 在单个语句中选择 "many to many"和 "belongs to",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58253450/