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
在给定的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子句被移动到子查询中,并且现在会正确地排序结果
原文地址: https://www.cveoy.top/t/topic/hyAC 著作权归作者所有。请勿转载和采集!