mysql连接-选择col1,其中col2与其他表中的(过滤的)col匹配
以下是我想做的:mysql连接-选择col1,其中col2与其他表中的(过滤的)col匹配,mysql,join,Mysql,Join,以下是我想做的: 选择tableB.column1,其中tableB.column2=some\u var 选择tableA.column1,其中tableA.column2是第一步的结果。 这可以在一次选择中完成吗?最好的方法是什么,尤其是在性能方面?我正在使用PHP 编辑: 我有一个基于对话的消息传递系统。1conva表和1回复表。答复表包括以下列:响应者和车队id。要加载车队,我会得到所有带有车队id的回复 我想使用ConveId将所有响应者发送到该车队,然后进入usertable并选择响
选择tableB.column1,其中tableB.column2=some\u var
选择tableA.column1,其中tableA.column2是第一步的结果。
conva表
和1回复表
。答复表包括以下列:响应者和车队id
。要加载车队,我会得到所有带有车队id的回复
我想使用ConveId将所有响应者发送到该车队,然后进入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),其中键是用户名,值是avatar
$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'];
}
我想多了解一点情况会有帮助的。真的取决于A依赖什么。谢谢大家的回答。这个答案适合我,因为它使用了车队id上的where。我还将使用DISTINCT和select,因为我将重用同一用户的化身。您使用的速记是什么?“用户表u”。这是为了性能还是仅仅为了可读性?谁能帮我把上面的文件链接一下吗。我不知道它叫什么。我相信它们叫别名。我认为它们不会影响性能,但通常用于可读性,因为表名可以是非描述性的,也可以是很长的。正如您正确指出的,DISTINCT将是必要的,因为我的SQL语句将给出重复的avatars.COVAID是一个十六进制字符串,引号中也是如此。我说我只是从一个专栏中挑选,这是误导。我没有意识到。