【问题标题】:MySQL UNION/JOIN on the same columnMySQL UNION/JOIN 在同一列上
【发布时间】:2015-03-31 16:40:52
【问题描述】:

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

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

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

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

我正在尝试构建一个查询以获取哪个名称对应于哪个其他名称,即:

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

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

【问题讨论】:

    标签: mysql join union


    【解决方案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 上查看。

    【讨论】:

    • 谢谢 - 因为 w1 和 w2 别名没有 AS,所以在读取查询时遇到了问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多