我正在尝试将多个表格混合到一个查询中并按日期排序。
但是我还想要一个列来定义信息来自哪个表 - 这样我就可以使用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名称吗?我看了看手册但找不到任何东西。
感谢。
答案 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的任何方言都会为您提供一个函数来指示查询的表名,因为您可以使用子查询,联接等。