如何解决如何在BigQuery中获得第一行而没有限制或分组
我正在尝试通过使用以下SQL语句更新表:
UPDATE
myTable AS w
SET
w.age_difference=(
SELECT
(r.allowed_age - w.age) AS age_difference
FROM
myTable2 AS r
WHERE
r.name=w.name
)
子查询提供了多行,这就是为什么我遇到错误的原因。使用UPDATE时,子查询中也不允许LIMIT
和GROUP BY
。仅确定子查询中的第一行对我来说很好。知道怎么做吗?
解决方法
这行吗?
UPDATE myTable w
SET w.age = (SELECT MIN(w.allowed_age - r.age) AS age_difference
FROM myTable2 r
WHERE r.name = w.name
) ;
编辑:
您并不是要查找特定差异,因此预聚合应该有效:
UPDATE myTable w
SET w.age = w.allowed_age - r.age ;
FROM (SELECT MIN(r.age) AS age
FROM myTable2 r
GROUP BY r.name
) r
WHERE r.name = w.name;
,
尝试这样做:
UPDATE `<your-table>` w
SET w.age_difference = r.allowed_age - w.age
FROM (
SELECT MIN(allowed_age) AS allowed_age,name
FROM `<your-second-table>`
GROUP BY name
) r
WHERE r.name = w.name;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。