繁体   English   中英

SQL将具有相同列名的多个表连接到一个新表中?

[英]SQL join multiple tables with same column names into a new table?

我有 12 个表,我需要将 5 个列组合成一个新表。

每个表都是不同的月份,但它们都有相同的列名。

我相信我需要使用 11 个连接,但是当我使用左连接时,我只从第一个表(jan)返回数据。 当我使用完全外连接时,我返回的行充满了 Null,但看起来像合并表。 我正在使用 BigQuery。

SELECT 
  jan.ride_id, 
  jan.member_casual,
  jan.ride_length, 
  jan.day_of_week,
  jan.rideable_type
FROM 
  `jan_22` as jan 
  left join `feb_22` as feb 
  on jan.ride_id= feb.ride_id

我正在寻找的结果是 5 列,其中包含来自所有 12 个表的数据合并。 只是在添加其他之前尝试正确合并前 2 个。

我还应该使用 select into 还是 insert into 来创建一个包含 5 列的新表?

谢谢你的帮助。

正如Mikhail Berlyant评论中所建议的,您应该使用union ,因为joinunion之间的区别在于join水平连接表,而union垂直连接。 由于您需要 5 列,您应该使用union将它们连接起来,如下所示:

insert dataset.new_table(<the columns(6)>)
SELECT 
  'Jan' as Month_Name,
  jan.ride_id, 
  jan.member_casual,
  jan.ride_length, 
  jan.day_of_week,
  jan.rideable_type
FROM 
  `jan_22` as jan 
UNION ALL
SELECT 
  'Feb',
  feb.ride_id, 
  feb.member_casual,
  feb.ride_length, 
  feb.day_of_week,
  feb.rideable_type
FROM `feb_22` as feb 
...

并且由于您可能有返回重复值的行,它将被union但不会被union all忽略,因此您应该使用union all

请参阅文档中的此处如何使用select语句insert表中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM