首页 > 解决方案 > 按没有在 SELECT 列表中的列对数据进行排序

问题描述

     SELECT old.REF_ID, old.DATE FROM REFID_HISTORY old 
     INNER JOIN REFID_HISTORY new 
     ON new.REF_ID = old.REF_ID 
UNION
     SELECT new.REF_ID, new.DATE FROM REFID_HISTORY new
     INNER JOIN REFID_HISTORY old
     ON new.REF_ID = old._REF_ID
ORDER BY DATE DESC;

上面的脚本显示了REFID. 不选择如何 REF_ID排序DATE

标签: sqloraclesortingselect

解决方案


将您的查询用作子查询,然后仅选择您要显示的那些列。像这样:

SELECT REF_ID
FROM (
      SELECT old.REF_ID, old.DATE FROM REFID_HISTORY old 
      INNER JOIN REFID_HISTORY new 
      ON new.REF_ID = old.REF_ID 
      UNION
      SELECT new.REF_ID, new.DATE FROM REFID_HISTORY new
      INNER JOIN REFID_HISTORY old
      ON new.REF_ID = old._REF_ID
     ) t
ORDER BY DATE DESC;

我创建了一个示例演示看看:

http://sqlfiddle.com/#!4/d5e9e8/3

已编辑: Q. 对于 Cust_ID = 'ABC123'

SELECT REF_ID
FROM (
      SELECT old.REF_ID, old.CUST_ID,old.DATE FROM REFID_HISTORY old 
      INNER JOIN REFID_HISTORY new 
      ON new.REF_ID = old.REF_ID 
      UNION
      SELECT new.REF_ID, new.CUST_ID, new.DATE FROM REFID_HISTORY new
      INNER JOIN REFID_HISTORY old
      ON new.REF_ID = old._REF_ID
     ) t
WHERE CUST_ID = 'ABC123'
ORDER BY DATE DESC;

推荐阅读