有两个表:
user_playlist
---------------
id
user_id
playlist_id
title
description
playlist
-------------
id
user_playlist_id
video_id
我想获取数据:
特定用户的所有user_playlist,并针对每个playlist检查video_id是否存在
现在我使用php首先获取user_playlist,然后foreach user_playlist统计video_id是否存在于播放列表中。
它可以工作,但似乎效率不高,希望可以通过 SQL 查询来完成。
感谢您的帮助。
更新:
**Sample data**
user_playlist
1, 1, 1, list_1_title, list_1_description
2, 1, 3, list_5_title, list_5_description
playlist
1, 1 , 5
2, 1 , 4
3, 2 , 6
例如,用户 ID #1 和视频 #4 结果是(用作 user_playlist 的别名):
up.id up.title up.description up.user_id is_video_id_select
1 list_1_title list_1_description 1 1
3 list_5_title list_5_description 1 0
最佳答案
是的,这可以使用简单的 left join
来完成
SELECT up.*,pl.id, pl.user_playlist_id,
(
CASE WHEN pl.video_id IS NULL THEN 0 ELSE 1 END AS is_video_id_select
)
FROM user_playlist as up
INNER JOIN playlist
ON up.playlist_id = pl.id
WHERE up.user_id = 'x' // where x is a user id
这将带来两个表之间的公共(public)数据
有关更多信息,请参阅我给您的引用链接
我希望这对你有帮助
关于php - PHP中使用MYSQL选择结果而不是for循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31933003/