这就是我想做的:
-
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 并选择响应者的所有头像,然后将头像存储在数组中并根据需要将它们回显出来。
尝试以下操作:
select a.Column1
FROM tableA a
LEFT JOIN tableB b ON a.Column2 = b.Column1
您也可以使用子查询,但这会降低性能。
你可能想尝试下面的sql语句
SELECT u.avatar
FROM usertable u
JOIN replies r ON u.responder_id = r.responder_id
WHERE r.convo_id = 1234
这将获取参与对话的用户的所有头像,ID 为 1234
这是我决定采用的。它构建一个数组 ($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'];
}