我在创建数据库视图时遇到了一些问题。我想将几个表连接到一个视图。我想将每列作为一行,而不是列。
以下是两个表的一个小例子:
表格
| Table1: Id | Table1: Type | | Table2: Id | Table2:Type |
|:----------:|:------------:| |:----------:|:-----------:|
| 1 | A | | 1 | C |
| 1 | B | | 2 | D |
| 2 | B | | 2 | E |
如果我使用以下SQL语句,我会得到以下结果:
SQL声明
SELECT
table1.id,
table1.Type AS Type1,
table2.Type AS Type2
FROM
table1
INNER JOIN table2 ON table2.id = table1.id
结果
| Id | Type1 | Type2 |
|:--: |:-----: |:-----: |
| 1 | A | C |
| 1 | B | C |
| 2 | B | D |
| 2 | B | E |
我知道这是对的。但我希望得到类似的东西:
| Id | Type |
|:--: |:-----: |
| 1 | A |
| 1 | B |
| 1 | C |
| 2 | B |
| 2 | D |
| 2 | E |
此视图会为每个Id
,Type
组合显示一行。
我怎么能以这种方式加入表?
答案 0 :(得分:4)
试试这个:
SELECT id, Type FROM table1
UNION ALL
SELECT id, Type FROM table2
ORDER BY ID,TYPE
结果:
ID TYPE
1 A
1 B
1 C
2 B
2 D
2 E
请参阅SQL Fiddle中的结果。
答案 1 :(得分:2)
SELECT id, Type from table1
union all
SELECT id, Type from table2
order by id, type
答案 2 :(得分:2)
使用此
select id,type from table_name
UNION ALL
select id,type from table_name
答案 3 :(得分:2)
使用关键字UNION ALL
加入多个查询。如果您想摆脱重复的结果,请使用UNION
。
确保列的数量和数据类型匹配。
示例:
SELECT id, Type from table1
UNION ALL
SELECT id, Type from table2;
答案 4 :(得分:2)
select id,type from table1
union all
select id,type from table2