1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Mysql数据库中的 Group by 语句的特殊之处(select 中的项目不必出现在Group by

Mysql数据库中的 Group by 语句的特殊之处(select 中的项目不必出现在Group by

时间:2018-06-17 17:28:34

相关推荐

Mysql数据库中的 Group by 语句的特殊之处(select 中的项目不必出现在Group by

■以前的认知 (基本知识,完全正确)

・使用GROUP BY 语句时,SELECT中的项目,必须在GROUP BY 中出现

SELECTa, b, cFROMtable1GROUP BYa, b, c

・或者和聚合函数一起使用(一般都是这么使用)

SELECTa, b, sum(c)FROMtable1GROUP BYa, b

■遇到的状况

今天调查代码时,发现了下面这样的代码。

以下的代码中,运行时,应该报错。

可是,实际在mysql中运行,没有报错。

SELECTa, b, cFROMtable1GROUP BYa, b

此时,C如果有多个值,那么应该返回下列查询中的第一个值。

(条件a,b的值是,对应GROUP BY 中a, b 的值)

SELECTcFROMtable1WHEREa=XXX,b=XXX

■原因

sql_mode 中,没有ONLY_FULL_GROUP_BY

■查看 sql_mode

select @@sql_mode;

---

ONLY_FULL_GROUP_BY

---

/ljz1315/article/details/84890254

---

■总结

虽然mysql有它的特殊之处,我们最好还是按照正常的套路来写代码。

下面的写法虽然不出错,但是 取得 的 c 的值是不确定的,

因此,这种写法,是创造bug的绝佳写法!

SELECTa, b, cFROMtable1GROUP BYa, b

---

Mysql数据库中的 Group by 语句的特殊之处(select 中的项目不必出现在Group by中)---不建议使用!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。