这就是我想要做的事情:
select tableB.column1 WHERE tableB.column2 = some_var
select tableA.column1 WHERE tableA.column2 was a result from step one.
这可以在一个选择中完成吗?最好的方法是什么,特别是在性能方面呢?我正在使用PHP。
修改
我有一个基于对话的消息系统。 1 convo table
和1 replies table
。回复表包含列:responder and convo_id
。要加载convo,我会收到convo_id的所有回复。
我想使用convoId让所有响应者进入该convo,并进入usertable并选择响应者的所有化身,然后将化身存储在数组中并根据需要回显它们。
答案 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'];
}