我有一个表格设置如下
我正在尝试编写一个查询来返回结果,其中status = 1 confirm = 1且用户ID =指定。我希望结果显示用户ID,与该用户ID关联的名称,freind id以及与该freind id关联的名称。到目前为止,在网络上的教程后,我提出了以下查询
SELECT `freinds.User ID`, `freinds.Freind ID`, `users.User`, `users.User` FROM `freinds` WHERE `User ID`= 6 INNER JOIN `users` on `users.ID`=6 AND `users.ID`=`freinds.Freind ID`
但是我收到此查询的SQL错误。我认为我应该做的是内部加入用户表两次,但我不确定如何做到这一点
答案 0 :(得分:2)
问题是你将tablename和columnname与backtick整体包装起来。您需要将其分开,或者如果名称不在“MySQL保留关键字”上,请删除反引号。
您还需要加入表User
两次,以便获取表Freinds
上每个ID的名称。
SELECT a.`User ID`,
a.`Freind ID`,
b.User FriendName,
c.User UserName
FROM `freinds` a
INNER JOIN `users` b
ON b.ID = a.`Freind ID`
INNER JOIN users c
ON c.id = a.`user ID`
WHERE `User ID`= 6
作为旁注,如果其中一个ID
可以为空,则LEFT JOIN
优先于INNER JOIN
。
要充分了解联接知识,请访问以下链接: