问题:在MySQL中加入两个视图

时间:2014-04-16 08:49:15

标签: mysql mysql-workbench

我有两个视图,我想在一个数据集中检索他们的数据。我知道我必须使用join,但是我没有得到正确的结果。

查看1数据:

id1 | col1 | col2 | col3 

1   | abc  | xyz | err

2   | pqr  | foo | err10

View2数据:

id2 | col1 | col2 | col4

1   | abc | xyz | tmp1

2   | xyz | rst | tmp10

3   | xyz | test | tmp5

预期结果:

col1 | col2 | col3 | col4

abc  | xyz | err | NULL

abc  | xyz | NULL | tmp1

pqr  | foo | err10 | NULL

xyz | rst | NULL | tmp10

xyz | test | NULL | tmp5

col1 and col2不应该显示两次,所有条目都应该在同一列中。

我正在使用MySQL 5.5.8

2 个答案:

答案 0 :(得分:1)

对我来说看起来像一个标准的联盟:

select col1, col2, col3, NULL as col4
  from view1
 union all
select col1, col2, NULL as col3, col4
  from view2

要从输出中获取排序,您可以指定order by子句:

select * from (

   select col1, col2, col3, NULL as col4
     from view1
    union all
   select col1, col2, NULL as col3, col4
     from view2

) a order by col1

另请参阅SQLFiddle

答案 1 :(得分:1)

你需要这个:

SELECT 
col1, col2, col3, NULL AS col4
FROM view1
UNION 
SELECT 
col1, col2, NULL AS col3, col4
FROM view2