我正在將 Oracle 查詢轉換為 Impala 等效項。我有一個像這樣的 Oracle 查詢:
select c1, c2 from t1
where rownum <= (select c3 from t2 where c4 = 'Some string' and c5 = 'some string')
and c2 in (1,2,3) order by c3 asc;
但是,Impala 不支持我在研究時了解到的rownum()。請幫助我在 Impala 中實作這一點。
先感謝您。
uj5u.com熱心網友回復:
你沒有像 oracle 中的 rownum 這樣的東西。但是,您可以使用row_number() over (partition by col, order by col)函式創建偽列。您需要避免通過子句進行磁區。
您可以更改您的 sql 并添加一個子查詢來計算 rownum 列,如下所示。您還需要更改您的查詢,以便它使用 join 而不是您上面寫的方式在 impala 中作業。
select c1, c2, c3 from
(select c1,c2, row_number() over (order by c1) as rownum from t1 ) t1
join (select c3 from t2 where c4 = 'Some string' and c5 = 'some string')
and c2 in (1,2,3)) t2 on
rownum<=t2.c3
order by c3 asc;
uj5u.com熱心網友回復:
根據檔案,您可以按原樣使用 Impala 的 row_number。這意味著如果您嘗試這種方式,您的查詢將成功執行:
select column from table
where row_number = 1;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/398206.html
上一篇:用sql中的最新時間更新表
