在SQL查询中包含表名

时间:2010-09-21 13:47:22

标签: sql mysql

我需要做的是从联合查询中获取一个表名,其中包含来自不同表的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

3 个答案:

答案 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
 ...