mysql中查询一个商品价格最大的商品名称的sql出错记录

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011123091/article/details/82079324

我是这样实现的,select goods_name,max(shop_price) from goods;然后报错如下

 查询原因才知道,

这个错误发生在mysql 5.7.5 和以后上,因为5.7.5默认的sql模式配置是

ONLY_FULL_GROUP_BY,

这个配置启用的是 “严格ANSIsql 规则”,严格ANSI sql 规则要求在group by的时候,没有聚合的列,在group by的时候,必须全部包含在group by 的字段中。

没有聚合的列,指的是没有使用 max, min, count, sum....这些函数的列,直接查询出字段的列。

如果不是aggregate 的列,必须要全部包含在集合里面。aggregate 的列,指的大概就是不能聚合的列,没有用函数的列,比如说 avg, sum, count 这些函数的列。用了这些函数的列,可以不包含

也就是说select了没有使用max,min,count,sum这个函数的列而报错。

所以我们可以规定下

改变下sql模式,但是这样查询出来的数据是错的。

 我们的数据的最大价格的商品是

kd876知识第一条数据,所以我们获取价格最大的商品的名称,还是利用排序,然后limit 1

select goods_name,shop_price from goods order by shop_price desc limit 1;

 其实max和group by有个主意事项就是https://blog.csdn.net/john_hongming/article/details/42742965

上边连接的出错情况知识,在select了没有使用聚合函数才会出错,如果不用不会出错。

猜你喜欢

转载自blog.csdn.net/u011123091/article/details/82079324