繁体   English   中英

结合两个精选查询MySQL

[英]Combining Two Select Queries MySQL

我有两个表格: itemscomments

我要选择用户评论的所有项目。

为了简单起见,假设items表具有两列: item_iditem_content comments表具有3列user_iditem_idcomment_content

给我评论用户的user_id ,我需要首先从comments表中选择所有item_id ,其中user_id = myUserId

这是一个基本查询SELECT item_id FROM comments WHERE user_id = '$myUserId'

然后,我需要为上一个查询返回的每个item_id选择item_content

我当时正在考虑做一个while($row = $my_first_query->fetch_array())循环,并且在其中进行类似SELECT item_content FROM item WHERE item_id = $row["item_id"]但是这有点混乱,我我想知道是否有一种更简单的方法,将两个查询合并为一个。

使用一个INNER JOIN

SELECT t1.*
FROM items t1
INNER JOIN comments t2
    ON t1.item_id = t2.item_id
WHERE t2.user_id = myUserId

您建议的先查询comments表,然后循环遍历结果集的方法效率低下。 在联接中,MySQL可以比您的PHP代码更快地处理此代数。

根据您要确切执行的操作,可以只使用JOIN子句。 “标题”表信息将在所有行中找到,因此可能不是您想要的。

另一种方法是运行两个不同的查询,第一个不更改,而第二个使用联接。 然后,您将获得一个带有标题的结果,另一个带有您可以通过的所有详细信息。 它比通过网络明智地运行相同的查询具有更高的性能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM