關于MYSQL中每個用戶取1條記錄的三種寫法(group by xxx)
更新時間:2013年07月02日 11:14:51 作者:
本篇文章是對MYSQL中每個用戶取1條記錄的三種寫法進行了詳細的分析介紹,需要的朋友參考下
今天以前的同學問我關于這方面的SQL語句,我特意記憶一下,畢竟這個也比較常見了
select * from (select * from member_payment
order by id desc) t group by member_id limit 10
第一種是先排序,然后group,這樣的話自然可以取到最適合的一條數(shù)據(jù)。
缺點很明顯:Using temporary; Using filesort
select s.*
from (SELECT max(id) as id FROM `member_payment` group by `member_id` limit 10) t
left join `member_payment` as s on t.id=s.id
第二種是聯(lián)合查詢
select * from `member_payment` where EXISTS (
select `id` from (
SELECT max(`id`) as id FROM `member_payment` group by `member_id` limit 10) t
where t.`id`=`member_payment`.`id`
)
第三種是子查詢
竊以為第二種效率最高
復制代碼 代碼如下:
select * from (select * from member_payment
order by id desc) t group by member_id limit 10
第一種是先排序,然后group,這樣的話自然可以取到最適合的一條數(shù)據(jù)。
缺點很明顯:Using temporary; Using filesort
復制代碼 代碼如下:
select s.*
from (SELECT max(id) as id FROM `member_payment` group by `member_id` limit 10) t
left join `member_payment` as s on t.id=s.id
第二種是聯(lián)合查詢
復制代碼 代碼如下:
select * from `member_payment` where EXISTS (
select `id` from (
SELECT max(`id`) as id FROM `member_payment` group by `member_id` limit 10) t
where t.`id`=`member_payment`.`id`
)
第三種是子查詢
竊以為第二種效率最高
相關文章
MySQL?DDL執(zhí)行方式Online?DDL詳解
這篇文章主要介紹了MySQL?DDL執(zhí)行方式Online?DDL詳解,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下2022-09-09Linux下安裝mysql的方式(yum和源碼編譯兩種方式)
這里介紹Linux下兩種安裝mysql的方式:yum安裝和源碼編譯安裝。需要的朋友可以參考下2018-02-02MySQL數(shù)據(jù)庫-錯誤1166 Incorrect column name
這篇文章主要介紹了MySQL數(shù)據(jù)庫-錯誤1166 Incorrect column name,需要的朋友可以參考下2016-04-04Java數(shù)據(jù)類型與MySql數(shù)據(jù)類型對照表
這篇文章主要介紹了Java數(shù)據(jù)類型與MySql數(shù)據(jù)類型對照表,以表格形式分析了java與mysql對應數(shù)據(jù)類型,并簡單講述了數(shù)據(jù)類型的選擇與使用方法,需要的朋友可以參考下2016-06-06mysql多表聯(lián)合查詢返回一張表的內容實現(xiàn)代碼
在使用mysql多表聯(lián)合查詢時怎樣可以做到只返回返回一張表的內容,本文將詳細介紹,需要了解的朋友可以參考下2012-12-12