[英]Combining Two Select Queries MySQL
我有两个表格: items
和comments
。
我要选择用户评论的所有项目。
为了简单起见,假设items
表具有两列: item_id
和item_content
。 让comments
表具有3列user_id
, item_id
和comment_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.