第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

MySQL:不在GROUP BY中

MySQL:不在GROUP BY中

白豬掌柜的 2019-09-26 11:10:37
該站點產(chǎn)生結果,但是使用SELECT COUNT和SELECT查詢以及GROUP BY具有兩個不同的結果計數(shù)。這可能是由于phpmyadmin中顯示的錯誤,而不是網(wǎng)站上的錯誤。查詢:SELECT count(DISTINCT `name`) as `numrows` FROM `users` WHERE `verified` = '1'SELECT `name`, `type`, `language`, `code` FROM `users` WHERE `verified` = '1' GROUP BY `name` ORDER BY `count` DESC LIMIT 0, 25PhpMyAdmin提供以下錯誤:1055-'main.users.type'不在GROUP BY中在閱讀MySQL文檔時,我仍不清楚必須解決的問題。我似乎無法掌握這一點。
查看完整描述

3 回答

?
智慧大石

TA貢獻1946條經(jīng)驗 獲得超3個贊


您需要有一個完整的小組:


SELECT `name`, `type`, `language`, `code` 

FROM `users` 

WHERE `verified` = '1' 

GROUP BY `name`, `type`, `language`, `code` 

ORDER BY `count` DESC LIMIT 0, 25

SQL92要求select子句中的所有列(聚合除外)都是group by子句的一部分。SQL99稍微放松了此限制,并指出select子句中的所有列在功能上必須依賴于group by子句。MySQL默認情況下允許部分分組依據(jù),這可能會產(chǎn)生不確定的答案,例如:


create table t (x int, y int);

insert into t (x,y) values (1,1),(1,2),(1,3);

select x,y from t group by x;

+------+------+

| x    | y    |

+------+------+

|    1 |    1 |

+------+------+

即,為組x選擇了隨機y??梢酝ㄟ^設置@@ sql_mode來防止此行為:


set @@sql_mode='ONLY_FULL_GROUP_BY';

select x,y from t group by x; 

ERROR 1055 (42000): 'test.t.y' isn't in GROUP BY


查看完整回答
反對 回復 2019-09-26
?
qq_遁去的一_1

TA貢獻1725條經(jīng)驗 獲得超8個贊

當然,最好的解決方案是使用完整的GROUP BY表達式。

但是還有另一種解決方案,可以解決ONLY_FULL_GROUP_BY對的舊MySQL擴展的阻塞GROUP BY。

SELECT name, 
       ANY_VALUE(type) type,
       ANY_VALUE(language) language,
       ANY_VALUE(code) code 
  FROM users  
 WHERE verified = '1' 
 GROUP BY name 
 ORDER BY count DESC LIMIT 0, 25

ANY_VALUE()顯式聲明MySQL不完整GROUP BY操作中曾經(jīng)隱含的內(nèi)容-服務器可以選擇任意值返回。


查看完整回答
反對 回復 2019-09-26
?
滄海一幻覺

TA貢獻1824條經(jīng)驗 獲得超5個贊

首先是要了解為什么會這樣。較早的版本使我們有些疏忽:雖然結果中完全列出了分組列的值(每個列均無例外),但其他選定列的值或多或少被省略了-但是代碼可以不會(不想)代表您告訴哪些人:

- Hey, MYSQL, list the families of the street - but add a first name as well to every row.- Okay sir, but shall I use the father's or the mother's or...? I'm a machine, give exact orders!

現(xiàn)在我們了解了原因,我們可以決定是否對其他列有偏好。采用

MAX() ASMIN() ASetc, works with strings, too

或者,如果確實是一樣的話,例如與分組值相關的非聚合值之間沒有區(qū)別,請使用

ANY_VALUE() AS

無論哪種方式,您都讓mysql知道您知道自己是“模棱兩可的”,但您實際上不想將重點放在除您分組的列之外的所有列上。


查看完整回答
反對 回復 2019-09-26
  • 3 回答
  • 0 關注
  • 877 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號