假设id char(10),name char(20),value1,value2,value3为double A(id,name) B(id,value1) C(id,value2) D(id,value3)select id as order1,id,0 as order2,name,null as value from A union select a.id as order1,"" as id,1 as order2,"" as name,value1 as value from A,B where A.id=B.id union select a.id as order1,"" as id,2 as order2,"" as name,value2 as value from A,B where A.id=C.id union select a.id as order1,"" as id,3 as order2,"" as name,value3 as value from A,B where A.id=D.id order by order1,order2
用第二个表的数据与第一个表比较生成sql条件语句取数便可以了
A(id,name)
B(id,value1)
C(id,value2)
D(id,value3)select id as order1,id,0 as order2,name,null as value from A
union
select a.id as order1,"" as id,1 as order2,"" as name,value1 as value from A,B where A.id=B.id
union
select a.id as order1,"" as id,2 as order2,"" as name,value2 as value from A,B where A.id=C.id
union
select a.id as order1,"" as id,3 as order2,"" as name,value3 as value from A,B where A.id=D.id
order by order1,order2