亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

GROUP BY 查詢總報錯

ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'yatest.user2.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

正在回答

3 回答

檢查一下你的 select 的字段 ,取消里面不能分組的字段。

0 回復 有任何疑惑可以回復我~
#1

wengyaqiang 提問者

非常感謝!
2018-03-20 回復 有任何疑惑可以回復我~

謝謝 江南一號的回覆與解釋

我不明白的是,套以下的函示寫出你說的 "?select status, count(*) from user where id<=10 group by status "?該怎麼寫?
是?print_r($PdoMySQL->find($tables,'id>=5','count(*)','status'));會出現錯誤?
還是需要修改ParsFields函式?如何改?抱歉阿,我真的還是基礎班的....


public?static?function?find($tables,$where=null,$fields='*',$group=null,$having=null,$order=null,$limit=null){
????????$sql='SELECT?'?.self::parseFields($fields).'?FROM?'.$tables
????????.self::parseWhere($where)
????????.self::parseGroup($group)
????????.self::parseHaving($having)
????????.self::parseOrder($order)
????????.self::parseLimit($limit);
????????$dataAll=self::getAll($sql);
????????return?count($dataAll)==1?$dataAll[0]:$dataAll;?//?三元運算子
????}
public?static?function?parseFields($fields){
????????//?如是數組/陣列
????????if(is_array($fields)){
????????????array_walk($fields,array('PdoMySQL','addSpecialChar'));?//?array_walk()?回調函式
????????????$fieldsStr=implode(',',$fields);
????????//?如是字串
????????}elseif(is_string($fields)&&!empty($fields)){
????????????if(strpos($fields,'`')===false){
????????????????$fields=explode(',',$fields);
????????????????array_walk($fields,array('PdoMySQL','addSpecialChar'));
????????????????$fieldsStr=implode(',',$fields);
????????????}else{
????????????????$fieldsStr=$fields;
????????????}
????????}else{
????????????$fieldsStr='*';
????????}
????????return?$fieldsStr;
????}


0 回復 有任何疑惑可以回復我~

出現一樣的問題,當執行這句? print_r($PdoMySQL->find($tables,'id<=10','*','status'));
出現這樣的錯誤訊息:

SQLSTATE : 42000?
SQL Error : Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'imooc.user.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
Error SQL : SELECT * FROM user WHERE id<=10 GROUP BY status

江南1號所說的“檢查一下你的 select 的字段 ,取消里面不能分組的字段”不太懂該怎麼做....求解,感謝先~


0 回復 有任何疑惑可以回復我~
#1

江南1號

問題出現在這條語句:SELECT * FROM user WHERE id<=10 GROUP BY status GROUP 不可以對所有列進行分組,所以這里不能使用 select * ,改成這樣就可以了:SELECT Count(*)
2018-03-23 回復 有任何疑惑可以回復我~
#2

江南1號

針對 status 字段分組,選擇列可以把它加上。 即:select status, count(*) from user where id<=10 group by status
2018-03-23 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

GROUP BY 查詢總報錯

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號