2010-09-21 115 views
2

我需要做的是从联合查询中得到一个表名,其中有来自不同表的4个选择。我需要获取id和表名以作进一步处理。在SQL查询中包含表名

,比如我有表1,表2,表3表4和有一个查询:

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

你可以使用代码标签,并告诉我们你究竟是什么? – JNK 2010-09-21 13:49:26

回答

15
SELECT 
    ID, 
    'table1' as TableName 
FROM 
    table1 

UNION 

... 

SELECT 
    ID, 
    'table4' as TableName 
FROM 
    table4 
+1

谢谢! Exacly我所需要的。 – Alakdae 2010-09-21 13:54:55

1

中添加的表名的要求

SELECT 
    id, 
    blablabla, 
    'table1' as tableName 
FROM 
    table1 
UNION 
SELECT 
    id, 
    blablabla, 
    'table2' as tableName 
FROM 
    table2 
... 
+0

谢谢!尽我所能,但devnull是第一个,所以我接受他的答案。 – Alakdae 2010-09-21 13:56:43

2
SELECT myid, My otherfield, 'table1' as tablename From table1 
UNION 
SELECT myid, My otherfield, 'mytabl2' From table2 

考虑其他几点,如果这些是互斥使用的表UNION ALL相反,它会快得多。另外,当数据库设计不正确时,如果这些表中有相同的字段,为什么它们不是全部在一个表中,这种类型的问题通常会出现?如果可能的话重新设计,至少考虑你是否会更好地服务于此。不知道这些表是什么,我可以;如果他们应该在一张桌子上,它通常是这样,但通常这是一种代码味道。

+0

感谢您的信息。开始时它是一张表,但新数据来自其他类别,表格现在用于不同类别并保存类似数据,但出于安全原因应保持分开。只有这一个查询访问多个表,并且仅用于列表。 – Alakdae 2010-09-21 14:04:16