gpt4 book ai didi

java - 我可以对具有两个主键的数据库进行两次选择吗?

转载 作者:行者123 更新时间:2023-12-01 10:06:03 25 4
gpt4 key购买 nike

大家好,我正在开发音乐应用程序的数据库,到目前为止我已经有了这个。

Song 
SongId Name Artist

Playlist
PlaylistId Name

Playlist_with_songs
id (fk)PlaylistId (fk)SongId

最后一个表都是主键。

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

此外,如果播放列表被删除但仍保留所有歌曲可用,那么这是一个值得遵循的好格式吗?级联在那里可以工作吗?

谢谢(我正在使用 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

关于java - 我可以对具有两个主键的数据库进行两次选择吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36469465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com