从3个表中获取所有结果而不重复

时间:2016-02-11 08:14:14

标签: mysql sql union

我有3个表:sportsvenuesinstructors,它们都有idname。而不是有3个单独的SELECT * FROM table我想用单个查询获取结果,以便结果如下:

+----------+------------+----------+------------+---------------+-----------------+
| sport_id | sport_name | venue_id | venue_name | instructor_id | instructor_name |
+----------+------------+----------+------------+---------------+-----------------+
|        1 | Sport1     |        1 | Venue1     |             1 | Instructor1     |
|        2 | Sport2     |        2 | Venue2     |             2 | Instructor2     |
|        3 | Sport3     |          |            |             3 | Instructor3     |
|        4 | Sport4     |          |            |               |                 |
+----------+------------+----------+------------+---------------+-----------------+

我试过

SELECT * FROM sports, venues, instructors

然而,有大量的重复。

编辑:3个表格之间没有任何关联。

1 个答案:

答案 0 :(得分:2)

虽然我发现在一个查询中获取所有值的用途有限,但您总是可以使用UNION ALL来获取所有值;

SELECT sport_id id,      sport_name name,      'sport' type      FROM sports
UNION ALL 
SELECT venue_id id,      venue_name name,      'venue' type      FROM venues
UNION ALL 
SELECT instructor_id id, instructor_name name, 'instructor' type FROM instructors

这将以格式提供输出;

id    name           type
-------------------------------
1     sport1         sport
2     sport2         sport
3     sport3         sport
4     sport4         sport

1     venue1         venue
2     venue2         venue

1     instructor1    instructor
2     instructor2    instructor
3     instructor3    instructor
相关问题