【发布时间】:2020-09-29 14:40:59
【问题描述】:
我正在尝试编写一个 MySql 查询,它将连接所有 3 个表,如下所述...
我的桌子:
clients
| client_id | first_name | award_id | country_id |
| 1 | jon | 3 | 2 |
| 2 | gary | 5 | 4 |
| 3 | ted | 1 | 2 |
| 4 | liz | 3 | 5 |
| 5 | bill | 1 | 5 |
awards
| award_id | award_name |
| 1 | award_1 |
| 2 | award_2 |
| 3 | award_3 |
| 4 | award_4 |
| 5 | award_5 |
| 6 | award_6 |
countries
| country_id | country_name |
| 1 | England |
| 2 | Ireland |
| 3 | USA |
| 4 | France |
| 5 | Finland |
| 6 | Holland |
| 7 | Germany |
| 8 | Spain |
我想要的输出:
query_results
| client_id | first_name | award_id | country_id | award_id | award_name | country_id | country_name |
| 1 | jon | 3 | 2 | 3 | award_3 | 2 | Ireland |
| 2 | gary | 5 | 4 | 5 | award_5 | 4 | France |
| 3 | ted | 1 | 2 | 1 | award_1 | 2 | Ireland |
| 4 | liz | 3 | 5 | 3 | award_3 | 5 | Finland |
| 5 | bill | 1 | 5 | 1 | award_1 | 5 | Finland |
| null | null | null | null | 2 | award_2 | null | null |
| null | null | null | null | 4 | award_4 | null | null |
| null | null | null | null | 6 | award_6 | null | null |
| null | null | null | null | null | null | 1 | England |
| null | null | null | null | null | null | 3 | USA |
| null | null | null | null | null | null | 6 | Holland |
| null | null | null | null | null | null | 7 | Germany |
| null | null | null | null | null | null | 8 | Spain |
我一直在尝试将这些与以下查询结合起来......
SELECT * FROM clients
LEFT JOIN countries ON clients.award_id = awards.award_id
UNION ALL
SELECT * FROM clients
RIGHT JOIN awards ON clients.award_id = awards.award_id
UNION ALL
SELECT * FROM clients
LEFT JOIN countries ON clients.country_id = countries.countries_id
UNION ALL
SELECT * FROM clients
RIGHT JOIN countries ON clients.country_id = countries.countries_id
此查询失败,错误代码为 1222。但是,第一个 UNION 有效,但在第三个时失败。 非常感谢任何帮助
【问题讨论】:
-
UNION 要求每个选择中的列数相同(它们可能是虚拟列)