sql - 连接表,选择所有但重命名几个 SQL BQ
问题描述
我想加入两个具有 4 个相同列名(ID、FieldID、FieldCropYear、UpdateUTC)的表。我想在 FieldID 上加入这两个表。
我使用了这个查询:
SELECT * FROM `xxx.yyy.111` AS ACT
INNER JOIN `xxx.yyy.222` AS BOUND
ON BOUND.FieldID = ACT.FieldID
AND BOUND.FieldCropYear = ACT.FieldCropYear
运行它后,我收到以下错误:Duplicate column names in the result are not supported. Found duplicate(s): ID, FieldID, FieldCropYear, UpdateUTC
是否可以选择 * 但在一个数据框中重命名这 4 列?处理它的最有效方法是什么?有没有可能是这样的:
SELECT *
EXCEPT(ID, FieldID, UpdateUTC, FieldCropYear),
ID as ID_b,
FieldID as FieldID_b,
UpdateUTC as UpdateUTC_b,
FieldCropYear as FieldCropYear_b
FROM `xxx.yyy.222` AS BOUND
INNER JOIN `xxx.yyy.111` AS ACT
ON BOUND.FieldID_b = ACT.FieldID
AND BOUND.FieldCropYear_b = ACT.FieldCropYear
解决方案
签出using()
而不是on
- 但您必须使用所有字段:
SELECT * FROM `xxx.yyy.111` AS ACT
INNER JOIN `xxx.yyy.222` AS BOUND
USING(ID, FieldID, FieldCropYear,UpdateUTC)
如果这没有意义,因为某些字段实际上是不同的,则重命名子查询中的某些字段:
SELECT * FROM `xxx.yyy.111` AS ACT
INNER JOIN
(select * EXCEPT(ID, UpdateUTC), ID AS actID, UpdateUTC as actUpdateUTC FROM `xxx.yyy.222`) AS BOUND
USING(FieldID, FieldCropYear)
没有测试代码,但我希望方法很清楚
推荐阅读
- javascript - 在登录期间多次调用 React-js Fetch api
- javascript - javascript 如何在循环内向数组的坐标添加其他属性,而不删除数组的现有属性
- ruby-on-rails - 通过移动设备登录 Ruby on Rails 'Devise' 失败
- windows - 调出特定用户的 Windows 登录屏幕以进行快速用户切换
- javascript - Lightslider 在最后一张幻灯片后反转
- javascript - d3 - v5 文本渲染比 v3.5 慢?
- ruby-on-rails - RSpec未定义的方法`to_sym'
- python - 当并非所有字符串都可转换时,如何从 CSV 文件中解析信息
- css - CSS 模糊效果和背景颜色
- amazon-web-services - 如何将指标附加到现有的 Lambda 日志组?