sql语句,分组排序问题

别人的sql

SELECT
                    a.createtime AS CREATETIME,
                    a.SSSXBH,
                    a.PID AS AFFAIRID,
                    a.SSSXBH AS AFFAIRCODE,
                    a. STATUS AS VALID,
                    b.SETTINGSNAME AS AFFAIRNAME,
                    b.SQJB AS AF_LEVEL,
                    b.SSDEPT AS AFFAIRSDEPTMENTNAME,
                    c.slsx AS TIMELIMIT,
                    a.updatestate
                FROM
                    ss_diritem_info AS a
                LEFT JOIN directorymanagement AS b ON a.pid = b.SS_DIREITEM_INFO_ID
                LEFT JOIN aprvtime AS c ON a.pid = c.SS_DIREITEM_INFO_ID
                WHERE a.updatestate ="+ updatestate + @"
                GROUP BY sssxbh
                ORDER BY
                    valid desc ,createtime DESC,sssxbh

我的sql

SELECT
    a.createtime AS CREATETIME,
    a.SSSXBH,
    a.PID AS AFFAIRID,
    a.SSSXBH AS AFFAIRCODE,
    a. STATUS AS VALID,
    b.SETTINGSNAME AS AFFAIRNAME,
    b.SQJB AS AF_LEVEL,
    b.SSDEPT AS AFFAIRSDEPTMENTNAME,
    c.slsx AS TIMELIMIT
FROM
    ss_diritem_info AS a
RIGHT JOIN (
    SELECT
        max(createtime) mt,
        sssxbh
    FROM
        ss_diritem_info
WHERE
    updatestate = 0
    GROUP BY
        sssxbh
) AS d ON a.sssxbh = d.sssxbh
AND a.createtime = d.mt
LEFT JOIN directorymanagement AS b ON a.pid = b.SS_DIREITEM_INFO_ID
LEFT JOIN aprvtime AS c ON a.pid = c.SS_DIREITEM_INFO_ID
ORDER BY
    valid DESC,
    sssxbh

我写的比较繁琐,先右连接获取到满足条件的数据再进行左连接获取其他的扩展数据,别人的是先左连接获取到所有数据后再进行筛选分组,执行时间差不多

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值