You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Amazon Athena中3个UNION查询添加行号报错,请求技术协助

问题解决:Athena UNION + row_number 报错修复

你的查询报错主要有3个原因,给你一步步修正:

错误点分析

  • 第三个子查询末尾的;多余了,整个UNION查询是一个完整语句,中间不能加分号
  • row_number()没起别名,你后面用row_num找不到这个列
  • 第三个查询用select *会把生成的行号列也包含进去,和前两个查询的3列(id/name/address)列数不匹配,UNION要求所有子查询列数、类型完全一致

修正后的完整语句

(
 select id, name, address from table1
)
UNION
(
  select id, name, address from table2
)
UNION
(
  select id, name, address
  from (
    select
      id,
      name,
      address,
      row_number() over (partition by id order by id) as rn -- 给行号列起别名
    from table3
  ) as t 
  where t.rn = 1 -- 用别名筛选
)

额外说明

  1. 关于你说的Athena不能直接用distinct:其实Athena支持distinct,如果只是想从table3取id/name/address的唯一值,也可以简化成select distinct id, name, address from table3,和用row_number的效果一致(如果同一个id对应的name/address都相同的话)。
  2. 如果你用row_number是因为同一个id可能对应不同的name/address,需要保留其中一行,建议把order by id改成有实际意义的列,比如order by create_time desc来保留最新的一行,不然按id排序选出来的行是随机的。

内容的提问来源于stack exchange,提问作者joe123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 07:01:02