MySQL多个WHERE来自同一列?

时间:2015-09-28 18:56:22

标签: mysql

用户表

------------------------
id        |   name
------------------------
1         |  Bob Smith
2         |  Jane Doe
3         |  Fred Flintstone
4         |  Barney Rubble
5         |  Marge Simpson
...       |  ...

连接

-----------------------------------------------
connection1 |   connection2  | connector
------------------------------------------------
1           |  3             | 7
11          |  5             | 7
35          |  7             | 7
18          |  9             | 7
12          |  13            | 6
...         |  ...           | ...

以上是我在MySQL数据库中拥有的表的示例。我知道我可以使用WHERE子句返回单个用户ID,但我想从同一个用户表中解析所有ID。有没有优雅的解决方案只返回一个MySQL语句中的用户名?

基本上返回一个这样的表:

-----------------------------------------------
connection1 |   connection2  | connector
------------------------------------------------
Tim         |  Steven        | Charlie

2 个答案:

答案 0 :(得分:0)

为了完成您要执行的操作,您需要多次加入用户表(每个连接一个)。像下面这样的东西应该做你想做的事。

SELECT
    t1.name as 'connection1',
    t2.name as 'connection2',
    t3.name as 'connection3'
FROM connections c
JOIN user t1 on t1.id = c.connection1
JOIN user t2 on t2.id = c.connection2
JOIN user t3 on t3.id = c.connection3

答案 1 :(得分:0)

SQL 101.使用连接:

SELECT
    c1.name AS connection1_name,
    c2.name AS connection2_name,
    connector
FROM Connections cn
JOIN users c1 ON c1.Id = cn.connection1
JOIN users c2 ON c2.Id = cn.connection2