[英]ORDER BY date in sub-query?
我正在使用Oracle 11g,遇到這種情況要根據子查詢對數據進行排序。
假設有兩個表STATUS_TABLE
和TXN_TABLE
。 我想短TXN_TABLE
基礎上, STATUS_TABLE
的DATE_INS
場。
下面是示例查詢,
SELECT ID
FROM STATUS_TABLE
WHERE STATUS = 'Pass'
ORDER BY DATE_INS DESC
該查詢基於DATE_INS以降序返回ID的列表。 因此,上述查詢已針對TXN_TABLE進行了一些擴展,如下所示
SELECT *
FROM TXN_TABLE
WHERE ID IN (SELECT ID FROM STATUS_TABLE
WHERE STATUS = 'Pass'
ORDER BY DATE_INS DESC)
這給了我:
ORA-00907:缺少右括號
我瀏覽了該文檔,他們告訴我們不可能在子查詢中創建訂單類。 因此,此方案是否有任何解決方法可以使其正常工作?
如果您需要更多詳細信息,請在下面評論。 任何幫助,將不勝感激!
也許你可以試試看
SELECT tmp.* FROM
(SELECT tx.*, st.DATE_INS AS DATE_INS_ST
FROM TXN_TABLE tx, STATUS_TABLE st
WHERE tx.ID = st.ID AND st.STATUS = 'Pass') tmp
ORDER BY DATE_INS_ST DESC
對子查詢進行排序不會對最終結果進行排序; 您可以將查詢重寫為:
SELECT *
FROM TXN_TABLE
INNER JOIN STATUS_TABLE
USING(ID)
WHERE STATUS='Pass'
ORDER BY DATE_INS DESC
就像jarlh正確認為的那樣,假設您的ID列不能有重復的值
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.