簡體   English   中英

在子查詢中按日期排序?

[英]ORDER BY date in sub-query?

我正在使用Oracle 11g,遇到這種情況要根據子查詢對數據進行排序。

假設有兩個表STATUS_TABLETXN_TABLE 我想短TXN_TABLE基礎上, STATUS_TABLEDATE_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM