MySQL查询。无法得到它

时间:2012-02-05 11:21:17

标签: mysql database relational

我在数据库中有两个表。一个存储唯一的userNames和一个唯一的id,另一个存储来自上一个表的用户是“朋友”:ex:

table users:
id   | username
---------------
100  |   aaa
200  |   bbb
300  |   ccc

table friends:
id | user  | friend
-------------------
1  | 100   | 200
2  | 300   | 100
3  | 300   | 200 

与上述示例中一样,用户100是300和200的朋友。 我想显示一个包含所有用户100个朋友的列表。请记住,他可以出现在两列(用户和朋友)的“朋友”表中。无法弄清楚查询应该是什么样子。我尝试的一切,它重复行和诸如此类的东西。

我知道这很微不足道,但我是新手。

3 个答案:

答案 0 :(得分:1)

试试这个:

Select distinct u.id, u.username
  from Users u 
  inner join Friends f on u.id = f.id
  where f.friend = 100
UNION ALL
Select distinct u.id, u.username
  from Users u 
  inner join Friends f on u.id = f.id
  where f.user = 100 

或者:

Select distinct u.id, u.username
  from Users u 
  inner join Friends f on u.id = f.id
  where f.user = 100 or f.friend = 100 

答案 1 :(得分:1)

这不会重复

SELECT distinct id FROM(
SELECT friend as id FROM friends
WHERE user = 100
UNION ALL
SELECT user as id FROM friends
WHERE friend = 100) ;

答案 2 :(得分:1)

尝试以下:

Select distinct u.id, u.username
from Users as u 
left join Friends as f on (u.id = f.user or u.id = f.friend)
where u.id=100