如何在行而不是列中连接表?

时间:2014-05-17 10:11:50

标签: sql join view

我在创建数据库视图时遇到了一些问题。我想将几个表连接到一个视图。我想将每列作为一行,而不是列。

以下是两个表的一个小例子:

  

表格

| 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       |

此视图会为每个IdType组合显示一行。

我怎么能以这种方式加入表?

5 个答案:

答案 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

http://www.w3schools.com/sql/sql_union.asp