3

我有一个表格设置如下

在此处输入图像描述

我正在尝试编写一个查询来返回状态=1 确认=1 和用户ID=指定的结果。我希望结果显示用户 ID、与该用户 ID 关联的名称、好友 ID 以及与该好友 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 错误。我认为我应该做的是两次内部加入用户表,但我不确定如何去做

4

1 回答 1

2

问题是你已经用反引号将表名和列名作为一个整体包装起来。您需要将其分开,或者如果名称不在“MySQL 保留关键字”上,请删除反引号。

您还需要加入表User两次,以便获取 table 上每个 ID 的名称Freinds

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 

作为旁注,如果其中一个IDnullableLEFT JOIN则比INNER JOIN.

要全面了解联接,请访问以下链接:

于 2013-01-29T05:58:43.120 回答