av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

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

關于MySQL group by的問題

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

問題描述

表字段及數(shù)據(jù):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

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

問題解答

回答1:

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

回答2:

你所謂的“第一條記錄”是按照什么順序的“第一”呢?數(shù)據(jù)庫的表本身并不預設某種順序。假設你是要按照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里面有分組, 只有分組列才是有效的數(shù)據(jù).select * from test group by user_id. 這行表示, 只有user_id這一列才是真數(shù)據(jù), 別的列是假的, 即使選出來, 也不能用.

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

相關文章:
主站蜘蛛池模板: 一级欧美一级日韩 | 少妇免费视频 | 日本特级黄色片 | 国产资源在线观看 | 亚洲免费在线观看视频 | 成人深夜| 亚洲一区二区欧美 | 亚洲日本中文字幕 | 91av视频在线播放 | 久久99精品久久久久久国产越南 | 一级黄色免费看 | 国产成人精品一区二区三区在线观看 | 中文字幕不卡在线 | www.久久久久久 | 日日操天天操 | 亚洲视频不卡 | 草草视频在线观看 | 亚洲精品aaa | 丁香久久 | 日本在线免费观看 | 日本青青草 | 国产精品女同 | 911精品国产一区二区在线 | 国产精品美女久久 | 精品国产99| 亚洲成人日韩 | 成人激情综合网 | 成年人视频在线播放 | 91网站免费观看 | 成人免费毛片aaaaaa片 | 999毛片| 亚洲精品成人网 | 91欧美日韩 | 久久精品小视频 | 亚洲永久精品视频 | 国产高潮在线 | 精品久久网 | 电家庭影院午夜 | 久久精品一区二区三区不卡牛牛 | 黄色成年人网站 | 欧美在线免费观看视频 |