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严格模式,会直接报错,养成良好的习惯。

访客
邮箱
网址

Top