我有一个包含多个表的MySQL数据库,这些表包含多个相同的列。
例如:
table1
包含productid
,price
以及一些特定于该表的列。
table2
包含productid
,price
和几个不同的列(不在table1
中)
table3
还有productid
,price
和更多独特列等。
是否可以在一个查询中从所有三个表中选择productid
和price
并将结果输出到一个输出中?一种方法是选择一些临时表,但有更简单/更好/更好的方式吗?
答案 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%';
之后,复制结果并删除最后一个并执行