亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

關于MySQL group by的問題

瀏覽:79日期:2022-06-17 18:25:32

問題描述

表字段及數據:idamountuser_idcreate_time110012016-10-11 10:59:332300022016-10-10 10:59:543325612016-10-09 11:00:164154612016-10-08 11:00:38

我想取每個user的第一條記錄,SQL:select * from test group by user_id.

結果:idamountuser_idcreate_time110012016-10-11 10:59:332300022016-10-10 10:59:54

然后我發現如果根據時間來排序,無論是順序還是逆序他都是這個結果,然后我猜想這個結果是不是根據id的大小來的,結果我改了id也是一樣,然后我猜想group by 結果是根據記錄添加順序來決定的,當group by的字段出現重復時,只會取第一條記錄,不知道這樣對不對,求解答?

問題解答

回答1:

不加create_time也一樣只是因為你的記錄中的順序已經是規律的了,什么排序也沒有的前提下,其實group by以后取出只是所有記錄中user_id第一次出現的記錄

回答2:

你所謂的“第一條記錄”是按照什么順序的“第一”呢?數據庫的表本身并不預設某種順序。假設你是要按照id排序且id無重復:

select * from test where id in (select min(id) from test group by user_id);

應該可以達到目的。

回答3:

group by是按主鍵順序展示的結果。要展示最新的amount需要在在組內排序。

selet * from( select id,amount,user_id,create_time from test order by create_time desc) as t group by user_id回答4:

這樣理解可以說錯, 也可以說對.

說錯是因為 按sql標準, 如果sql里面有分組, 只有分組列才是有效的數據.select * from test group by user_id. 這行表示, 只有user_id這一列才是真數據, 別的列是假的, 即使選出來, 也不能用.

但是對于MySql, 他的行為就和你描述的一樣.

相關文章:
主站蜘蛛池模板: 亚洲地址一地址二地址三 | 尤物视频在线观看免费视频 | 一区二区三区四 | 免费看片资源 | 国产一区 在线播放 | 波波网在线看免费观看视频 | 青草青在线免费视频 | 九九免费观看全部免费视频 | 欧美精品一区视频 | 18在线网站 | 国产在线观看一区二区三区 | 国产高清专区 | 国产亚洲新品一区二区 | 9丨精品国产高清自在线看 9久9久女女免费精品视频在线观看 | 国产成人手机在线好好热 | 黄色三级毛片网站 | 一区二区三区日韩精品 | 女人色毛片女人色毛片中国 | 国产麻豆剧传媒精品国产免费 | 萌白酱粉嫩福利视频在线观看 | 成年人小视频在线观看 | 小明免费视频一区二区 | 女人被两根一起进3p在线观看 | 直接看黄的网址 | 亚洲综合欧美综合 | 色噜噜国产精品视频一区二区 | 国产一级做a爰片... | 99免费精品| 在线看片网址 | 一级不卡毛片免费 | 中文字幕欧美成人免费 | 一本本久综合久久爱 | 97精品国产福利一区二区三区 | 亚洲夂夂婷婷色拍ww47 | 国产欧美日韩成人 | 亚洲欧美国产精品专区久久 | 成人看片在线观看 | 国产91调教 | 1300部小u女视频免费 | a级毛片免费在线观看 | 亚洲黄网在线观看 |