0

嗨,我有一个名为 Users 的表和一个名为 friends 的表,friends 表有两种数据类型 UserID 和 FriendID,(两种数据类型的外键都是 Users 表的主键),

我需要提供一个 ID 并找到该人朋友姓名的列表,我不确定我是否错误地设计了表格或者我应该重写查询。

我的查询如下,(到目前为止它只显示了第一个匹配的人的详细信息)

 SELECT Users.Name 
 FROM Users 
 WHERE Users.ID = SELECT Friends.UserID 
                  FROM Friends,Users 
                  WHERE Users.ID = (Select Users.ID  
                                    From Users 
                                    WHERE Users.Username = 'John')
4

3 回答 3

1

试试这个:

SELECT Users.Name FROM Users WHERE Users.ID IN  -- Get names that belongt to ID's
(SELECT FriendID FROM Friends WHERE UserID =    -- All ID's of the Friends of 
(SELECT UserID FROM Users WHERE Name = 'John')) -- Johns ID
于 2012-09-21T11:14:35.157 回答
0

我已经通过将第一个 = 更改为 IN 来解决它

于 2012-09-21T11:25:09.220 回答
-1

这是你想要实现的吗?用户

  1. 用户 ID (PK)
  2. 姓名

朋友

  1. 好友ID (PK)
  2. 用户 ID (FK)

    select User.Name from User u join Friend f on f.UserID = u.UserID where Name = 'John'

于 2012-09-21T11:21:35.937 回答