INNER/LEFT JOIN 两个表并用行扩展结果

INNER/LEFT JOIN two tables and extend result with row

我有两个 table,它们都有一个名为 "type" 的行。它看起来像这样:

事件:

--------------------------------
|  id  |  title     |  type    |
--------------------------------
|  1   |  EventNo1  |  travel  |
|  2   |  EventNo2  |  info    |
|  3   |  EventNo3  |  travel  |
|  4   |  EventNo4  |  sport   |
|  5   |  EventNo5  |  info    |
--------------------------------

类型:

--------------------------------
|  id  |  type    |  label     |
--------------------------------
|  1   |  travel  |  xxx #1    |
|  2   |  info    |  xxx #2    |
|  3   |  sport   |  xxx #3    |
--------------------------------

如果 "events.type" 匹配 "types.type" 我想用类型中的标签扩展我的查询结果,所以它看起来像这样:

合并:

-------------------------------------------
|  id  |  title     |  type    |  label   |
-------------------------------------------
|  1   |  EventNo1  |  travel  |  xxx #1  |
|  2   |  EventNo2  |  info    |  xxx #2  |
|  3   |  EventNo3  |  travel  |  xxx #1  |
|  4   |  EventNo4  |  sport   |  xxx #3  |
|  5   |  EventNo5  |  info    |  xxx #2  |
-------------------------------------------

我该如何做到这一点?我假设我必须使用 INNER/LEFT JOIN,但以下尝试不会给我任何行:

SELECT events.id, events.title, events.type, types.id, types.type, types.label
FROM events 
INNER JOIN types
ON events.type = types.type

更新

哇..原来查询根本没有问题。它没有 return 任何行的原因是因为 "types" table 在标签行中有一些非法字符 :)

你在 types.id

错过了一个 s

SqlFiddle Demo

SELECT events.id, events.title, events.type, types.id, types.type, types.label
FROM events 
INNER JOIN types
ON events.type = types.type

输出

| id |    title |   type | id |   type |  label |
|----|----------|--------|----|--------|--------|
|  1 | EventNo1 | travel |  1 | travel | xxx #1 |
|  2 | EventNo2 |   info |  2 |   info | xxx #2 |
|  3 | EventNo3 | travel |  1 | travel | xxx #1 |
|  4 | EventNo4 |  sport |  3 |  sport | xxx #3 |
|  5 | EventNo5 |   info |  2 |   info | xxx #2 |

您错过了 type.id 的 (s)。它应该是 types.id。 此外,您需要删除 type.id 因为根据 ypur 输出不需要它。

SELECT events.id, events.title, events.type,  types.type, types.label FROM events  INNER JOIN types ON events.type = types.type

请更喜欢保存 id 而不是使用类型,因为它有助于 节省磁盘空间 space 而且 id 会自动递增,因此人为错误的可能性较小。