具有新列的多个表上的UNION查询

时间:2014-11-14 01:32:42

标签: mysql sql

我只是想说这个论坛在我目前的工作中对我帮助很大。

我需要另一个帮助,为我们的ms访问数据库编写一个sql查询。我们的想法是为所有表(1月到12月)建立一个联合查询,以获取唯一的ID号并得到他们的" Item"每月的值作为输出表中的列。

下面是一个例子。如果在表中找不到ID,则该值将返回null。

这在excel中似乎很容易,但我们希望在后端执行此操作。我只记得为所有表写下UNION查询,但是我得到了多远。

提前感谢您的帮助。

表1:1月

 |    ID    |   Item    |
 |    1     |   Apple   |
 |    2     |   Salad   |
 |    3     |   Grapes  |  

表2:二月

 |    ID    |   Item    |
 |    1     |   Apple   |
 |    2     |   Grapes  |
 |    4     |   Grapes  |

输出表:

 |    ID    |   January   |   February   |
 |    1     |    Apple    |   Apple      |
 |    2     |    Salad    |   Grapes     |
 |    3     |    Grapes   |   NULL       |
 |    4     |    NULL     |   Grapes     |

2 个答案:

答案 0 :(得分:2)

一种方法是union allgroup by

select id, max(January) as January, max(February) as February
from (select id, item as January, NULL as February from January
      union all
      select id, NULL, item from February
     ) jf
group by id;

答案 1 :(得分:0)

如果每个表只存在一次id,为什么不使用Inner Join呢?如果列在另一个表上不存在但在第一个表上存在

,它将自动使列无效
SELECT id, Jan.Item,Feb.Item 
FROM January Jan
INNER JOIN February Feb
on Jan.id=Feb.id