使用MYSQL在PHP中选择结果而不是for循环


Select the result instead of for loop in PHP using MYSQL

有两个表:

user_playlist
---------------
id
user_id
playlist_id
title
description
playlist
-------------
id
user_playlist_id
video_id

And I want to get the data:

特定用户的所有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的结果是(使用up作为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 

这将把两个表之间的公共数据

更多信息请参见我给你的参考链接

希望对大家有所帮助