mysql in 子查询中group by数据不准确记录

(1).查询出现问题的sql:

SELECT *  FROM

hqjf_express_trace_items  WHERE

trace_id in(
    SELECT
            trace_id
    FROM
            hqjf_express_trace
    WHERE
            (STATUS = 1 OR receipt_time > 0 ) AND  trace_id>0   AND type<>''
    GROUP BY type
)

问题点:子查询中单独查询的结果trace_id(3,2,9,1,91,5,7,80),整个SQL查询出的结果多出了trace_id(8)

(2).正确的写法:

SELECT *  FROM

hqjf_express_trace_items  WHERE

trace_id in(
    SELECT
            max(trace_id)
    FROM
            hqjf_express_trace
    WHERE
            (STATUS = 1 OR receipt_time > 0 ) AND  trace_id>0   AND type<>''
    GROUP BY type
)

当我们使用group by时进行select字段,字段要么是group by的字段,要么对其他字段进行聚合处理,否则在子查询中会出现问题。另外建议使用sql严格模式,会直接报错,养成良好的习惯。

上一篇:手慢无,有礼相送,GSLS 2019全球智慧物流峰会 倒计时!


下一篇:技术带来的效率和组织带来的效率,哪个在前?