mysql join - 选择col1,其中col2匹配其他表中的(过滤)col

时间:2012-03-25 07:06:15

标签: mysql join

这就是我想要做的事情:

  1. select tableB.column1 WHERE tableB.column2 = some_var

  2. select tableA.column1 WHERE tableA.column2 was a result from step one.

  3. 这可以在一个选择中完成吗?最好的方法是什么,特别是在性能方面呢?我正在使用PHP。

    修改 我有一个基于对话的消息系统。 1 convo table和1 replies table。回复表包含列:responder and convo_id。要加载convo,我会收到convo_id的所有回复。

    我想使用convoId让所有响应者进入该convo,并进入usertable并选择响应者的所有化身,然后将化身存储在数组中并根据需要回显它们。

3 个答案:

答案 0 :(得分:1)

尝试以下方法:

select a.Column1 
FROM tableA a 
LEFT JOIN tableB b ON a.Column2 = b.Column1 

您也可以使用子查询,但效率较低。

答案 1 :(得分:0)

您可能想尝试以下sql语句

SELECT u.avatar
FROM usertable u
JOIN replies r ON u.responder_id = r.responder_id
WHERE r.convo_id = 1234

这将获得参与ID为1234的对话的所有用户的头像

答案 2 :(得分:0)

这是我决定使用的内容。它构建了一个数组($ avatars),其中键是用户名,值是头像。

$result = mysql_query("SELECT 
    DISTINCT users.avatar,replies.sender 
    FROM users 
    JOIN replies 
    ON users.username = replies.sender 
    WHERE replies.convo_id = '$convoID'
");
while($array = mysql_fetch_assoc($result)){
    $avatars[$array['sender']] = $array['avatar'];
}