我使用的是Oracle 11g,遇到了根据子查询订购数据的情况。
假设有两个表STATUS_TABLE
和TXN_TABLE
。我想根据TXN_TABLE
的{{1}}字段缩短STATUS_TABLE
。
以下是示例查询
DATE_INS
此查询根据DATE_INS以降序返回ID列表。所以上面的查询已经为TXN_TABLE扩展了一点点,如下所示
SELECT ID
FROM STATUS_TABLE
WHERE STATUS = 'Pass'
ORDER BY DATE_INS DESC
给了我:
ORA-00907:缺少右括号
我浏览了文档,他们告诉我们无法在子查询中创建订单类。那么这个场景有什么解决方法可以使它工作吗?
如果您需要更多详细信息,请在下面进行评论。任何帮助将不胜感激!
答案 0 :(得分:1)
也许你可以试试这个
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
答案 1 :(得分:1)
对子查询进行排序将不会对最终结果进行排序; 您可以将查询重写为:
SELECT *
FROM TXN_TABLE
INNER JOIN STATUS_TABLE
USING(ID)
WHERE STATUS='Pass'
ORDER BY DATE_INS DESC
假设,正如jarlh正确理解的那样,您的ID列不能具有重复值