我使用其他開發人員編寫以下查詢:修改Oracle查詢開始
SELECT DISTINCT c.id category_id,
c.parent_id,
d.name AS category_name,
level
FROM category c,
category_language d
WHERE c.id = d.category_id
AND c.is_active = 1
AND c.is_deleted = 0
AND c.deleted_date IS NULL
AND d.is_active = 1
AND d.is_deleted = 0
AND d.deleted_date IS NULL
AND ((to_date(d.expiry_date,'DD-MON-YYYY') > to_date(sysdate,'DD-MON-YYYY'))
OR d.expiry_date IS NULL)
AND d.language_id = 1
AND c.cat_type_id = 1
START WITH c.parent_id =1308206844
CONNECT BY c.parent_id = prior c.id
ORDER SIBLINGS BY d.name
我有兩個問題。
首先,我不知道該怎麼與 START,CONNECT BY,PRIOR關鍵詞在查詢工作。
其次,當我改變ORDER SIBLINGS BY d.name到ORDER SIBLINGS BY c.priority遞減拋出以下錯誤消息:=
ORA-01791: not a SELECTed expression
01791. 00000 - "not a SELECTed expression"
我也試圖改變的數據類型從數字到字符串的優先級,但引發相同的錯誤。
我想通過c.priority desc運行查詢來生成所需的結果。
@hol:你說對這些oracle關鍵字的學習是正確的。順便說一下,問題的解決方案是,我忘記在select語句中選擇c.priority,當我通過c.priority desc.Now寫入命令時它的工作正常... :) –
很酷。這是因爲結果集是有序的,所以你必須包含它。我的答案很高興爲你工作。 – hol