假设我有三个表,分别称为比特率、歌曲和文件。
表-比特率
-------------------------------
| bitrate_id | bitrate_name |
---------------------------------
| 1 | 128kbps |
---------------------------------
| 2 | 320kbps |
---------------------------------
table -歌曲
-------------------------------
| song_id | song_title |
---------------------------------
| 1 | My song 1 |
---------------------------------
| 2 | My song 2 |
---------------------------------
表格文件
---------------------------------------------------------------------
| file_id | song_id | song_location | bitrate_id |
----------------------------------------------------------------------
| 1 | 1 | loc 1 | 1 |
----------------------------------------------------------------------
| 2 | 2 | loc 2 | 1 |
---------------------------------------------------------------------
我有一个应用程序,用户可以在其中创建歌曲并在特定歌曲下上传不同的比特率轨道。假设我有一首名为“我的歌曲 1”的歌曲。当用户向这首歌曲添加不同的比特率轨道时,用户必须从“
”生成的选择框中选择比特率SELECT * FROM bitrate
如果用户将128kbps轨道添加到“我的歌曲1”,然后当他将另一个轨道上传到同一首歌曲时,他无法选择“128kbps”再次强调“比特率。意思是我想检查一首歌曲是否已经有 128kbps 比特率歌曲,然后当我查询比特率表时,只显示除“128kbps”之外的其他比特率。如何实现这一目标?谢谢
上传表格
最佳答案
你好,伙计。您可以尝试使用条件NOT IN来选择当前歌曲未使用的比特率。
SELECT * FROM `bitrate` AS `b` WHERE b.bitrate_id NOT IN
(SELECT `bitrate_id` FROM `file`
WHERE `file_id` = {{here comes the actual file ID}}
);
在上面的查询中,我们尝试选择其bitrate_id不存在于表文件的某些行中的比特率
了解有关NOT IN条件的更多信息 here
关于mysql - 根据两个表选择记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38485063/