mySQL union返回表名

时间:2010-11-20 01:26:57

标签: mysql

我正在尝试将多个表格混合到一个查询中并按日期排序。

但是我还想要一个列来定义信息来自哪个表 - 这样我就可以使用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名称吗?我看了看手册但找不到任何东西。

感谢。

1 个答案:

答案 0 :(得分: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的任何方言都会为您提供一个函数来指示查询的表名,因为您可以使用子查询,联接等。