查看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誊垢,而該列又是自增長的,那么這個選項就有用了殃饿。
? ? STRICT_TRANS_TABLES:在該模式下芋肠,如果一個值不能插入到一個事務(wù)表中,則中斷當(dāng)前的操作帖池,對非事務(wù)表不做限制
? ? NO_ZERO_IN_DATE:這個模式影響了是否允許日期中的月份和日包含0奈惑。如果開啟此模式,2016-01-00是不允許的睡汹,但是0000-02-01是允許的肴甸。它實際的行為受到 strict mode是否開啟的影響1。
? ? NO_ZERO_DATE:設(shè)置該值囚巴,mysql數(shù)據(jù)庫不允許插入零日期原在。它實際的行為受到 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后,不能用雙引號來引用字符串懂昂,因為它被解釋為識別符
一般報錯介时,要么改sql語句,要么就是對sql_mode進(jìn)行重新設(shè)置
? ? 下面是對sql中的group by進(jìn)行詳解和說明:
? ? group by 有一個原則, select 后面的所有列中,沒有使用聚合函數(shù)的列,必須出現(xiàn)在 group by 的后面
? ? 聚合函數(shù):求和函數(shù)——SUM()
? ? ? ? ? ? ? ? ? ? ? 計數(shù)函數(shù)——COUNT()
? ? ? ? ? ? ? ? ? ? ? 最大/最小值函數(shù)—MAX()/MIN()
? ? ? ? ? ? ? ? ? ? ? 均值函數(shù)——AVG()
? ? 要對分組后的結(jié)果進(jìn)行篩選凌彬,一般使用having語句來實現(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)載請附上博文鏈接褐澎!