2010-11-20 75 views
2

我试图将许多表拼凑成一个查询并按日期排序。mySQL union返回表名

但是我也想要一个定义信息来自哪个表的列 - 这样我可以使用PHP来决定如何处理数据。

这是我迄今为止

SELECT DATABASE() as source, title AS MAIN, id as ID, date 
    FROM collection WHERE userID = '1234' 
    UNION 
    SELECT DATABASE() as source, body, id, date 
    FROM blog WHERE posterID = '1234' 
    ORDER BY date DESC 

其中由日运作良好,订单,但“源”列仅返回数据库 “myusername.dabtabaseName”

反正是有mySQL可以返回它来自的TABLE名称?我查看了手册,但找不到任何东西。

谢谢。

回答

6

为什么不简单?

SELECT DATABASE() as source, 'Collection' as TblName,title AS MAIN, id as ID, date 
     FROM collection WHERE userID = '1234' 
     UNION 
     SELECT DATABASE() as source, 'Blog' as TblName,body, id, date 
     FROM blog WHERE posterID = '1234' 
     ORDER BY date DESC 

我怀疑任何SQL方言将为您提供一个功能,用于指示查询的表名,因为你可以有子查询,联接等

+0

..Wow我觉得愚蠢...哈哈!谢谢! – Moe 2010-11-20 01:46:48

+0

你不应该因为提问而感到愚蠢 – Sparky 2010-11-20 01:48:57