繁体   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