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



我有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个表合并的数据。我只是想把前两个正确地合并在一起,然后再添加其他的。

我也应该使用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写入表。

最新更新