2011-06-10 40 views
0

我想在MySQL中添加一列输出到我的结果集。我可以通过执行两个单独的查询轻松获得这些结果,但我希望它们处于相同的结果集中,以便我可以将它们导出到一起。联合在两个选择不同列数

反正这里是我在做什么:

select buildid, cast(status as char), eventtime from buildstatuses 
where statustype = 8) 
union all (select schedulerid, "", "" from builds 
where builds.buildid in (select buildid from buildstatuses where statustype = 8)); 

我只得到在初始选择列为输出列:

构建状态EVENTTIME

我没有得到其他列我想要:schedulerid

有什么想法?

感谢

编辑:更新

select buildstatuses.buildid, cast(status as char), eventtime, "" as schedulerid 
from buildstatuses 
inner join builds 
on buildstatuses.buildid = builds.buildid 
where buildstatuses.statustype = 8; 

这是我在目前位置,列ID喜欢加仍然显示为空白,即使有别名

+0

你应该首先阅读关于这个连接表的概念。 – Mulki 2011-06-10 19:05:55

回答

2
select buildid, cast(status as char), eventtime, schedulerid from buildstatuses 
inner join builds on buildstatuses.buildid = builds.buildid 
where statustype = 8 

UNION只会选择两个表格之间通用的列。

你在找什么是一个连接。

编辑:本来我误解了这个问题,并建议改为union。我更新了答案,使用join这应该给你想要的。

+0

这只是输出一个空白列,我希望调度程序ID为 – 2011-06-10 19:08:57

+0

@Hunter - 你对UNION有什么期望?它追加行。如果您希望两个表的结果显示在同一行中,则需要使用JOIN添加UNION。话虽如此,Alan的建议是创建包含两个表中_independent_行的结果集的正确方法。我只是用他的方法补充一点,如果这样做更有意义的话,还可以'select ...,NULL AS schedulerid FROM ...'。 – 2011-06-10 19:11:33

+0

我更新了我的答案。我认为你真的是在寻找一个不是工会的联盟,我更新了答案,做我认为你想要的。 – 2011-06-10 19:14:40