mySQL union返回表名

Moe*_*Moe 2 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
Run Code Online (Sandbox Code Playgroud)

哪个效果很好并按日期排序,但"源"列只返回数据库"myusername.dabtabaseName"

无论如何,mySQL可以返回它来自的TABLE名称吗?我看了看手册但找不到任何东西.

谢谢.

Spa*_*rky 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
Run Code Online (Sandbox Code Playgroud)

我怀疑SQL的任何方言都会为你提供一个函数来指示查询的表名,因为你可以有子查询,连接等.