UNION ALL - 获取表名

问题描述:

我正在使用Python与SQLite模块。我执行工会在两个表中的所有语句,有没有办法让每个记录来自于表的名称,所以当我做了获取所有它看起来是这样的:UNION ALL - 获取表名

value11, value12, value13, table1 
value21, value22, value23, table2 
value31, value32, value33, table1 

唯一我可以想到的做法是通过在每个包含表名的表中创建另一列,但是如果已经有一些东西可以做到这一点,那么这会存储大量不必要的数据。

感谢

+0

你的做法是正确的。添加一个包含表名的列。 –

+0

@GordonLinoff,是的,在结果表中添加一列_作为query_的一部分,如下所示。我相信OP建议为每个包含所有行中的表名的输入表添加一个持久列。这将是非常低效的。 – Chris

您可以使用这样的查询:

SELECT 'table1' as tablename , t1.field1, t1.field2 FROM table1 
UNION ALL 
SELECT 'table2' as tablename , t2.field1, t2.field2 FROM table2 
+0

谢谢,这正是我所追求的。只要SO会允许我,我会立即解决这个问题。谢谢 – newaccount1111

您将包括在查询表名:

select value11, value12, value13, 'table1' as which from table1 
union all 
select value21, value22, value23, 'table2' as which from table2 
union all 
select value31, value32, value33, 'table1' as which from table1;