我需要做的是从联合查询中获取一个表名,其中包含来自不同表的4个选择。我需要获取id和表名以便进一步处理。
例如我有table1,table2,table3 table4并有一个查询:
SELECT id from table1,blablabla
UNION
SELECT id from table2,blablabla
UNION
SELECT id from table3,blablabla
UNION
SELECT id from table4,blablabla
我需要结果如下:
1, blablabla, table1
4, blablabla, table4
7, blablabla, table2
答案 0 :(得分:16)
SELECT
ID,
'table1' as TableName
FROM
table1
UNION
...
SELECT
ID,
'table4' as TableName
FROM
table4
答案 1 :(得分:2)
SELECT myid, My otherfield, 'table1' as tablename From table1
UNION
SELECT myid, My otherfield, 'mytabl2' From table2
考虑其他几点,如果这些是相互排斥的表使用UNION ALL相反,它会快得多。此外,当数据库设计不正确时,这种类型的问题经常出现,如果这些表中有相同的字段,为什么它们不在一个表中?如果可能的话重新设计,至少考虑一下你是否会更好地服务。不知道那些表是什么,我可以;如果它们应该放在一个表中,那么就是这样,但通常这是代码味道。
答案 2 :(得分:1)
在您的请求中添加表名
SELECT
id,
blablabla,
'table1' as tableName
FROM
table1
UNION
SELECT
id,
blablabla,
'table2' as tableName
FROM
table2
...