结合两个选择查询MySQL

时间:2016-07-20 14:35:09

标签: php mysql select

我有两个表:itemscomments

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

为简单起见,我们假设items表有两列:item_iditem_content。让comments表格包含3列user_iditem_idcomment_content

我获得了评论用户的user_id,我需要先从item_id表中选择comments,然后user_id = myUserId

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

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

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

2 个答案:

答案 0 :(得分:3)

使用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代码更快地处理这个代数。

答案 1 :(得分:0)

根据您想要做的事情,您可以使用JOIN子句。 “标题”表信息将在所有行中找到,因此可能不是您想要做的。

另一种方法是运行两个不同的查询,第一个不变,第二个带连接。然后,您将获得一个带有标题的结果,另一个带有您可以通过的所有详细信息。它比在网络上运行相同的查询更有效。