mysql group by內排序的實現以及having和where 條件語句查詢的區別

例如有一個 版本號的登陸日誌表,loginlog( id, LoginName, Resource, IP, LoginTime, loginversion) ,

id 爲 自動增長字段,loginname爲登陸用戶名,   logintime 爲最近一次登陸時間,loginversion爲登陸的版本號

現在要求 選出 每個用戶名的最近一次登陸的版本號(注意:用戶名不能重複且必須覆蓋所有數據庫表中的用戶),現貼出查詢代碼如下

SELECT * FROM (select * from loginlog order by LoginTime desc) login group by LoginName  order by LoginTime desc ;

但當加入查詢條件的時候,例如

where Resource='qq' and LoginTime >= '2013-10-17 00:00:00' and LoginTime <= '2013-10-23 23:59:59';

group by的查詢條件用having

SELECT * FROM (select * from loginlog order by LoginTime desc) login group by LoginName  having 1=1 and resource = 'qq' and LoginTime >= '2013-10-17 00:00:00' and LoginTime <= '2013-10-23 23:59:59' order by LoginTime desc ;

則問題解決,附where和having的區別:

having 和where 都是用來篩選用的

having 是篩選組  而where是篩選記錄

他們有各自的區別

1》當分組篩選的時候 用having

2》其它情況用where


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章