从多个表中选择相同的列

时间:2017-10-25 09:59:42

标签: mysql

我有一个包含多个表的MySQL数据库,这些表包含多个相同的列。

例如:

table1包含productidprice以及一些特定于该表的列。

table2包含productidprice和几个不同的列(不在table1中)

table3还有productidprice和更多独特列等。

是否可以在一个查询中从所有三个表中选择productidprice并将结果输出到一个输出中?一种方法是选择一些临时表,但有更简单/更好/更好的方式吗?

5 个答案:

答案 0 :(得分:4)

使用union:

    select productid,price from table1
union select productid,price from table2
union select productid,price from table3

答案 1 :(得分:0)

您可以在查询中使用别名,这样您就可以获得不同的列,例如:

select table1.productid as productId1, table1.price as price1, table2.prodcutid as productId2, ....

答案 2 :(得分:0)

使用以下查询,您可以从不同的表中获取记录

SELECT t1.productid, t1.price,t2.productid, t2.price,t3.productid, t3.price from table1 t1,table2 t2 ,table3 t3

答案 3 :(得分:0)

如果您需要具有共同产品的所有表格中的相关数据,那么您应该使用如下的连接:

select t1.productid as t1_productid,t1.price as t1_price,t1.othercol
t2.productid as t2_productid,t2.price as t2_price,t2.anothercol
t3.productid as t3_productid,t3.price as t3_price,t3.manymorecol from table1 t1 
inner join table2  t2 on t2.productid = t1.productid
inner join table3  t3 on t3.productid = t2.productid

如果您想要其他类型的输出,请告诉我。

答案 4 :(得分:0)

如果使用此代码,许多表的结构相同:

Oracle

Select ' Select productid,price'|| ' from '|| table_name || ' Union' quer From tabs Where table_name like 'table%';

SQL Server

Select ' Select productid,price'+ ' from '+ table_name + ' Union' quer From INFORMATION_SCHEMA.TABLES where table_name 'table%'; 之后,复制结果并删除最后一个并执行