在给定的SQL查询中,ORDER BY子句是在WHERE子句之后执行的,这可能导致排序结果不正确。为了修复这个问题,可以将ORDER BY子句移动到子查询中。以下是修改后的SQL查询:

SELECT
    A.ID,
    A.entrance_name,
    COALESCE(C.rksl, 0) rksl
FROM
    (SELECT * FROM entrance_management) A
LEFT JOIN (
    SELECT
        b.entrance_id,
        SUM(CASE WHEN b.lx = 1 THEN b.sl ELSE 0 END) rksl
    FROM
        real_traffic_statistics b
    WHERE
        1 = 1
        AND b.YEAR >= 2023
        AND b.YEAR <= 2023
        AND b.MONTH >= 5
        AND b.MONTH <= 6
        AND (b.MONTH >= 5 AND b.DAY >= 27 OR b.MONTH <= 6 AND b.DAY <= 26)
    GROUP BY
        b.entrance_id
    ORDER BY
        rksl DESC -- 将ORDER BY子句移动到子查询中
) C ON A.ID = C.entrance_id
WHERE
    A.zt = '1';

在修改后的查询中,ORDER BY子句被移动到子查询中,并且现在会正确地排序结果

java SELECT A	ID	Aentrance_name	COALESCE Crksl 0 rkslFROM	 SELECT FROM entrance_management 	A LEFT JOIN 	SELECT		bentrance_id	SUM CASE WHEN blx = 1 THEN bsl ELSE 0 END rkslFROM	real_traffic_stati

原文地址: https://www.cveoy.top/t/topic/hyAC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录