大家好,我正在为音乐应用程序在数据库上工作,到目前为止,我已经掌握了这一点。

Song
SongId Name Artist

Playlist
PlaylistId Name

Playlist_with_songs
id (fk)PlaylistId  (fk)SongId


最后一个表都是主键。

所以我想知道查询的样子。
例如如果我想获取所有具有playlistId 5的歌曲,那么我会
必须从Song表中获取实际的歌曲,我可以使用哪种语句。

此外,如果在删除播放列表的情况下仍保留所有歌曲可用,这是否是一种很好的格式?在那里可以级联工作吗?

谢谢
(我正在使用sqlite。)

最佳答案

SQL部分

老式的方式:

SELECT * FROM Song
WHERE SongId IN (
  SELECT SongId FROM Playlist_with_songs
  WHERE Playlist_id = 5)


现代方式:

SELECT s.* FROM Song s
JOIN Playlist_with_songs ps ON ps.SongId = s.SongId
  AND ps.Playlist_id = 5


删除部分

正是这种模式用于n:m关系。您应该为两个FK定义ON DELETE CASCADE

10-06 03:24