gpt4 book ai didi

mysql - 在 Phoenix 中使用包含 IFNULL 和序列号列的 sql 查询时出错

转载 作者:行者123 更新时间:2023-11-29 07:36:07 36 4
gpt4 key购买 nike

我有一个 SQL 查询如下:

Select 
@sl:=@sl+1 as slNum,
IFNULL(startTime,'-'),
from
race,
(Select @s1:=0) x ;

当我在 mysql 中运行上述查询时,我得到了想要的结果,但我想在 Phoenix 上对存储在 Hbase 中的表执行相同的查询。@sl 出现以下错误:

org.apache.phoenix.exception.PhoenixParserException: ERROR 601 (42P00): Syntax error. Encountered "@" at line 'x', column 'y'.
Caused by: NoViableAltException(15@[])

当我注释掉序列号时,我得到了这个:

org.apache.phoenix.exception.PhoenixParserException: ERROR 603 (42P00): Syntax error. Unexpected input. Expecting "LPAREN", got "IFNULL" at line x2, column y2.
Caused by: UnwantedTokenException(found=IFNULL, expected 91)

Phoenix 不支持它们还是有其他方法可以做到这一点?任何建议都会有所帮助。

最佳答案

不知道Phoenix是否支持动态SQL,但是有一种不用动态SQL生成行号的方法:

SELECT
COALESCE(r1.startTime, '-') AS startTime
(SELECT COUNT(*) FROM race r2 WHERE r2.startTime <= r1.startTime) slNum
FROM race r1;

我假设开始时间提供了顺序。您当前的逻辑在没有排序的情况下使用行号没有很好地定义。您可以将 startTime 替换为我的子查询的 WHERE 子句中的另一列。

关于mysql - 在 Phoenix 中使用包含 IFNULL 和序列号列的 sql 查询时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48742368/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com