表1
id int
name nvarchar(50)
...
表2
id int
name nvarchar(50)
...
其中表1和表2中的记录没有交叉,而且表1和表2除了id和name外其他列都是不同名不同义的,比如:
表1
1 name1 ........
2 name2 ........
表2
100 name100 ......
101 name101 ......
下面我想要一次查询出以下结果:
id name
1 name1
2 name2
100 name100
101 name101
请问可行否,该怎么做?
select id, name from 表1 a union all select id, name from 表2 b
既然你只要id,name这两列,就只查询这两列,然后union好了,如果确定记录没有交叉就加上all,这样数据库不会检查去重,可以提升下效率
select a.area_id par_Id, 0 men_Id, a.area_name men_Name from area a union select d.area_id, d.department_id , d.department_name from department d
http://www.isstudy.com/sqlser/2582.html
不同列数的UNION问题,虽然我没问,但是用的时候也遇到了,谢谢你。
select 表1.id as id ,表1.name as name from 表1,表2 where 表1.id=表2.id union select id,name from 表1 where id not in (select id from 表2) union select id,name from 表2 where id not in (select id from 表1)
取迪卡尔积了,这个通常是要避免的,还是谢谢你。