MySQL UNION / JOIN在同一列上

时间:2015-03-31 16:40:53

标签: mysql join union

我有一个规范化表,其行是两个外键,指向窗口小部件表中的主键。这个想法是小部件成对出现,因此规范化表有两列:widget1和widget2。

+--------------------+
| widget1 | widget2  |
+--------------------+
|    1    |    3     |
|    2    |    4     |
+--------------------+

每个小部件也有两列;它的主键和名称。例如

+------------+
| pk | name  |
+------------+
| 1  | Bob   |
| 2  | Joe   |
| 3  | Max   |
| 4  | Tim   |
+------------+

我试图构建一个查询来获取哪个名称对应于哪个其他名称,即:

+--------------------+
| widget1 | widget2  |
+--------------------+
|   Bob   |   Max    |
|   Joe   |   Tim    |
+--------------------+

UNION两个select语句给出一个长列。如何获得所需的输出? Here's the SQLFiddle.

1 个答案:

答案 0 :(得分:1)

您想要两个联接,而不是UNION

SELECT w1.name, w2.name
FROM   norm
  JOIN widgets w1 ON w1.pk = norm.widget1
  JOIN widgets w2 ON w2.pk = norm.widget2

sqlfiddle上查看。