由union分隔的查询

时间:2011-08-05 09:13:22

标签: mysql

我有4个表,表a,表b和表c具有相同的字段名称,但表d具有不同的字段名称,但我需要加入查询并且必须导出为CSV文件。

       select a.name,a.age,b.addr from a,b where a.rid=b.tid UNION select 
       a.name,a.age,c.addr from a,c where a.uiroll=c.piroll

我还需要加入表d,但它有一些字段,我需要的是d.group和d.project,它们与表a相关,如d.uon = a.von

cvs文件中的结果应为

     name     age     addr    group    project

以及价值观。

3 个答案:

答案 0 :(得分:1)

您尝试过类似的事情吗?

SELECT a.name, a.age, b.addr, d.group, d.project 
FROM a, b, d 
WHERE a.rid=b.tib 
AND d.uon=a.von 
UNION 
SELECT a.name, a.age, c.addr, d.group, d.project 
FROM a, c, d 
WHERE a.uiroll=c.piroll 
AND d.uon=a.von

答案 1 :(得分:0)

select a.name, a.age, b.addr, d.group, d.project 
from a
 LEFT JOIN b 
on a.rid = b.tid
 LEFT JOIN c
on a.uiroll = c.piroll
 LEFT JOIN d
on a.von = d.uon;

答案 2 :(得分:0)

SELECT a.name,a.age,b.addr, d.group. d.project
FROM a
INNER JOIN b ON a.rid=b.tid
INNER JOIN d ON a.von=d.uon
UNION
SELECT a.name,a.age,c.addr, d.group. d.project
FROM a
INNER JOIN d ON a.von=d.uon
INNER JOIN c ON a.uiroll=c.piroll

你的描述不太清楚,但我想这就是你想要的。您还应该查看JOIN语法。在使用关系数据库时,联接是必不可少的。