查看sql_mode:
select @@sql_mode;
? ? 幾種常見的mode介紹:
? ? ONLY_FULL_GROUP_BY:出現(xiàn)在select語句、HAVING條件和ORDER BY語句中的列,必須是GROUP BY的列或者依賴于GROUP BY列的函數(shù)列。
? ? NO_AUTO_VALUE_ON_ZERO:該值影響自增長列的插入。默認(rèn)設(shè)置下,插入0或NULL代表生成下一個自增長值。如果用戶希望插入的值為0,而該列又是自增長的,那么這個選項(xiàng)就有用了。
? ? STRICT_TRANS_TABLES:在該模式下,如果一個值不能插入到一個事務(wù)表中,則中斷當(dāng)前的操作,對非事務(wù)表不做限制
? ? NO_ZERO_IN_DATE:這個模式影響了是否允許日期中的月份和日包含0。如果開啟此模式,2016-01-00是不允許的,但是0000-02-01是允許的。它實(shí)際的行為受到 strict mode是否開啟的影響1。
? ? NO_ZERO_DATE:設(shè)置該值,mysql數(shù)據(jù)庫不允許插入零日期。它實(shí)際的行為受到 strictmode是否開啟的影響2。ERROR_FOR_DIVISION_BY_ZERO:在INSERT或UPDATE過程中,如果數(shù)據(jù)被零除,則產(chǎn)生錯誤而非警告。如果未給出該模式,那么數(shù)據(jù)被零除時MySQL返回NULL
? ? NO_AUTO_CREATE_USER:禁止GRANT創(chuàng)建密碼為空的用戶
? ? NO_ENGINE_SUBSTITUTION:如果需要的存儲引擎被禁用或未編譯,那么拋出錯誤。不設(shè)置此值時,用默認(rèn)的存儲引擎替代,并拋出一個異常
? ? PIPES_AS_CONCAT:將”||”視為字符串的連接操作符而非或運(yùn)算符,這和Oracle數(shù)據(jù)庫是一樣的,也和字符串的拼接函數(shù)Concat相類似
? ? ANSI_QUOTES:啟用ANSI_QUOTES后,不能用雙引號來引用字符串,因?yàn)樗唤忉尀樽R別符
一般報錯,要么改sql語句,要么就是對sql_mode進(jìn)行重新設(shè)置
? ? 下面是對sql中的group by進(jìn)行詳解和說明:
? ? group by 有一個原則, select 后面的所有列中,沒有使用聚合函數(shù)的列,必須出現(xiàn)在 group by 的后面
? ? 聚合函數(shù):求和函數(shù)——SUM()
? ? ? ? ? ? ? ? ? ? ? 計(jì)數(shù)函數(shù)——COUNT()
? ? ? ? ? ? ? ? ? ? ? 最大/最小值函數(shù)—MAX()/MIN()
? ? ? ? ? ? ? ? ? ? ? 均值函數(shù)——AVG()
? ? 要對分組后的結(jié)果進(jìn)行篩選,一般使用having語句來實(shí)現(xiàn)
? ? 注意where與having的區(qū)別,where是在分組前對結(jié)果集進(jìn)行過濾,而having是對group by分組后的結(jié)果集進(jìn)行過濾
---------------------
作者:sunyadong_
來源:CSDN
原文:https://blog.csdn.net/sunyadong_/article/details/86491139
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!