我有两个视图,我想在一个数据集中检索他们的数据。我知道我必须使用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
答案 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