2011-03-08 32 views
1

我想要达成的目标可能很难解释,所以我会尽力而为。加入多个表格并显示当前表格

我想在mysql中加入三个表的结果,并在结果中包含表名/别名,因此我知道哪些表的信息来自于。

我所有的表都有共同的列。

+1

没有代码?这很难帮助你。 – soasme 2011-03-08 14:46:58

回答

1

你应该尝试:

select 'mytable1', column1, column2 
union 
select 'mytable2', column1, column2 
union 
select 'mytable3', column1, column2 
+0

如果我有多余的列没有出现在每张表 – fir3x 2011-03-08 15:22:03

+0

你想让它们显示在“连接”表中?如果你知道他们的名字,你可以把''放在select子句中 – 2011-03-08 16:05:55

1

您可以使用MySQL的别名功能

这样

select table1.col1 as table1_col1, table2.col1 as table2_col1... 
0

没有你的意思是这样的吗?

SELECT t1.*, "t1" as tablename FROM t1 
UNION 
SELECT t2.*, "t2" as tablename FROM t2 

其中t1t2是你的表

顺便说一句:这不是很正确的数据存储在这种方式。如果您需要在单个查询中合并来自两个表的数据,则应该考虑将表中的数据合并为一个新列(并且可能将其添加到键中)。例如,你的表是

CREATE TABLE american_cars(id INT, company TEXT, model TEXT) 
CREATE TABLE european_cars(id INT, company TEXT, model TEXT) 

,那么你应该把它合并为

CREATE TABLE cars(id INT, company TEXT, model TEXT, region TEXT) 

或类似的东西。

+0

我会尝试组合这些表,但是从长远来看,对于带索引的单个表,数据集可能会变大 – fir3x 2011-03-08 16:28:41