Oracle-Sql-Developer
“處理語句時出錯”執行查詢在其他行中查找具有多個值的唯一值
這個查詢在其他行中查找具有多個值的唯一值的語法有什麼問題嗎?
Select Distinct Ss.`cd`, Ss.`cd` From nit.assrr As Ss Join ( Select `cd` From nit.assrr Group By `cd` Having Count(Distinct `cd`) > 1 ) As Y On Ss.`cd` = Y.`cd`
我收到此錯誤:
$$ Cloudera $$HiveJDBCDriver 錯誤處理查詢/語句。 錯誤程式碼:2,SQL 狀態:處理語句時出錯:FAILED:執行錯誤,從 org.apache.hadoop.hive.ql.exec.mr.MapRedTask 返回程式碼 2,查詢:.. 我的查詢
我懷疑您使用的是 0.13.0 之前的 Hive 版本。在這種情況下,問題是
AS
為子查詢提供別名時的關鍵字。從 HiveQL 文件子查詢中的
FROM
子句:SELECT ... FROM (subquery) name ... SELECT ... FROM (subquery) AS name ... (Note: Only valid starting with Hive 0.13.0)
… Hive 0.13.0及更高版本 (HIVE-6519)中的子查詢名稱之前可以包含可選關鍵字“AS” 。
因此,有效的語法是:
Select Distinct Ss.`cd`, Ss.`cd` From nit.assrr AS Ss Join ( Select `cd` From nit.assrr Group By `cd` Having Count(Distinct `cd`) > 1 ) Y -- AS removed On Ss.`cd` = Y.`cd` ;
關於查詢的語義。我不確定實際問題是什麼,但無論表中的數據是什麼,這個查詢都保證返回 0 行。
COUNT(DISTINCT cd)
將是 1 當你有GROUP BY cd
所以HAVING
子句將FALSE
永遠是並且Y
子查詢將有 0 行。