当前位置:首页 > SQL > 正文内容

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

高老师5年前 (2021-02-24)SQL1454

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

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/348.html

分享给朋友:

“mysql in 子查询中group by数据不准确记录” 的相关文章

mysql group分组排序

mysql group分组排序

下面的是商品数据表,id是主键,catename是分类,titile是标题,price是价格,现在要求计算每种分类下的商品平均价格.id     catename       &n...

mysql 取不重复数据,mysql 取消重复数据,mysql 重复记录取最新

mysql 取不重复数据,mysql 取消重复数据,mysql 重复记录取最新

已有表名log来记录用户日志,id是主键,uid是用户id,rmk是备注,addtime是时间戳,需要取出不重复的用户日志记录默认的结果集:id     uid      rmk ...

mysql主从同步,mysql主从同步原理,mysql 主从同步配置,mysql主从数据库搭建

mysql主从同步,mysql主从同步原理,mysql 主从同步配置,mysql主从数据库搭建

【一】.配置3台服务器centos,并安装mysql1.主服务器192.168.5.21(master)  2.从服务器192.168.5.22(slave1)  3.从服务器192.168.5.23(slave2)  最新的centos版...

mysql查询缓存

mysql查询缓存

【一】.概念查询缓存,就是将查询结果缓存起来,如果遇到相同的Sql查询,直接从缓存中读取结果。例如在一个商城中的商品分类是不会经常变动的,完全可以走缓存,没必要每次从磁盘中读取。【二】.查询缓存开启状态执行Sql:show VARIABLES  like &n...

mysql find_in_set() 函数使用

mysql find_in_set() 函数使用

假设有个会员表,auth字段代表拥有的权限,其中1代表查看、2代表修改 、3代表新增  4代表删除,现在需要查询拥有新增权限的用户。先看看会员表:select * from memberid name auth 1 gao 1,2,3 2 chen 3 3 z...

group by 多个字段

group by 多个字段

容易忘记备忘。group by x,y的意思是将所有具有相同x字段值和y字段值的记录放到一个分组里。举个栗子: 现在运营部门需要统计用户表每个性别和每个年龄的人数统计,例如男性17岁的20人,男性18岁的10人,女性40岁的1人先看会员表数据:SELECT * ...