【问题标题】:Mysql, inner join in multiple columns with the same nameMysql,多列同名内连接
【发布时间】:2013-10-24 15:22:19
【问题描述】:

所以,我有两张表,其中一张是这样的:

表:data

编号 | col_1 | col_2 | col_3 | col_4 -------------------------------------------------- ---- 1 | 167 | 12 | 15 |某事1 2 | 198 | 27 | 12 |某事2 3 | 253 | 15 | 17 |某事3

和表:catalog

编号 | col_1 ----------------- 12 |红色的 15 |黄色 17 |粉色的 27 |绿色

现在,我要做的是从data 表中获取col_1col_2col_3col_4,而不是获取col_2col_3 的值,根据catalogid,这些应替换为catalog 表的col_1

例如,我希望它为数据表的每一行返回以下信息:

167 |红色 |黄色 |某事1 198 |绿色 |红色 |某事2 253 |黄色 |粉红色 |某事3

我试过这个:

SELECT data.col_1, catalog.col_1, catalog.col_1, data.col_4
FROM data
INNER JOIN catalog ON data.col_2 = catalog.id
INNER JOIN catalog ON data.col_3 = catalog.id

但没有效果和惊喜。

我根本找不到如何将一个表的多个列内部连接到另一个表的单个列,Google 并没有提供很大的帮助。我实际上不知道我是否使用正确的关键字进行搜索。

【问题讨论】:

  • 您必须使用过时的 google 版本。这是 SQL 101。catalog 的每个实例都需要自己的别名。
  • 但是如果 data 中的 col 的 id 不存在于 catalog 中会怎样?
  • @Strawberry 也许他使用 Bing。

标签: mysql inner-join


【解决方案1】:

你必须给表名一个别名,因为它不知道目录指向哪里。

SELECT data.col_1, c1.col_1, c2.col_1, data.col_4
FROM data
INNER JOIN catalog c1 ON data.col_2 = c1.id
INNER JOIN catalog c2 ON data.col_3 = c2.id

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-05
    • 2014-08-20
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多