我需要按组创建行号。在mysql中我使用"用户定义的变量"为了那个原因。 但是在雅典娜给了我一个错误:没有可行的选择在输入' @'
这是我的问题:
SELECT @row_num := IF(@prev_value=concat_ws('',t.user_id,t.campaign_id,t.placement_id, t.creative_id),@row_num+1,1) AS RowNumber
,t.user_id
,t.campaign_id
,t.placement_id
,t.creative_id
, t.imp_clk_event_dt
,@prev_value := concat_ws('',t.user_id,t.campaign_id,t.placement_id, t.creative_id)
FROM e2c_conv t,
(SELECT @row_num := 1) x,
(SELECT @prev_value := '') y ORDER BY t.user_id,t.campaign_id,t.placement_id, t.creative_id, t.imp_clk_event_dt
有关如何解决此问题的任何建议都将受到高度赞赏。
答案 0 :(得分:2)
with Mandeep as
(
select 123 as m_1
, 234 as m_2
) -- Variable_table (Define Variables here)
select *
from (
select 123 as a
, 'abc' as v) as b
left join Mandeep as m on 1 = 1 - mapping with rows
where a = m.m_1 -- using variables
答案 1 :(得分:1)
TLDR::AWS Athena不支持变量。
根据他们的documentation,AWS Athena基于Presto 0.172和一些limitations。 Presto当前存在一个开放的问题,正在讨论变量的添加。 PR-5918
答案 2 :(得分:0)
Athena 现在支持 Prepared Statements 进行参数化查询:
<块引用>您可以使用 Athena 参数化查询功能准备语句,以便使用不同的查询参数重复执行同一查询。准备好的语句包含参数占位符,其值在执行时提供。准备好的语句使 Athena 查询能够直接获取参数并有助于防止 SQL 注入攻击。
答案 3 :(得分:-2)
查询:
with man as ( select ('123') as m_number
)
select *
from table_name as t
left join man as m on 1=1
where t.number = m.m_number