You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在未选取DATE列时按其对REF_ID排序?附REF_ID谱系SQL脚本

解决方法:用子查询/CTE实现排序且不展示DATE列

没问题,这事儿很好解决——你只需要把原本包含DATE的查询逻辑打包成一个子查询或者CTE(公共表表达式),外层查询只提取你需要的REF_ID,同时在外层保留ORDER BY子句引用DATE列就行。这样既满足了按DATE排序的要求,最终结果里也不会出现DATE列。

方式一:使用子查询

SELECT ref_id
FROM (
    -- 原有的查询逻辑,保留DATE用于排序
    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
) AS refid_temp
ORDER BY DATE DESC;

方式二:使用CTE(更易读)

如果你的数据库支持CTE(像MySQL 8+、PostgreSQL、SQL Server这些主流数据库都支持),用这种写法会更清晰:

WITH refid_temp AS (
    -- 原有的查询逻辑,保留DATE用于排序
    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
)
SELECT ref_id
FROM refid_temp
ORDER BY DATE DESC;

补充说明

SQL语法允许ORDER BY引用子查询/CTE中定义的列,哪怕外层SELECT没有包含该列。这样就完美实现了你的需求:按DATE排序,但最终结果只展示REF_ID。

内容的提问来源于stack exchange,提问作者user2102665

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:34:13