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

标签 php mysql sql performance

有两个表:

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/

相关文章:

mysql - 无法从 Rails 应用程序连接到 Mysql

php - 如何使用限制和某种分数选择随机行?

mysql - 保持查询分离、组合它们还是使用 JOIN?

php - 在 CodeIgniter 中从数据库检索值不起作用

php - 选择时文本框更改

PHP PDO 按列分组结果

mysql - "AND"和 "OR"是否会在同一个查询中工作?

mysql - 通过连接两个表来更新所有字段值

mysql - 如何创建 MYSQL 模式来表示图形数据库?

php - 大写 FROM 导致错误 1064