SQL按照某一列數據去重並顯示整行信息


mysql按照某一字段去重,並顯示其他字段信息。有時候會有一些這樣的需求,就是按照sql中的某一列值去重,還要顯示其他字段的信息。用distinct進行去重時不能顯示整行的信息,對這種需求顯然難以滿足。

v准備工作

1.0 創建測試

CREATE TABLE `logtest` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `msg` varchar(500) NOT NULL,
    `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`)
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
insert into `logtest` (msg) values('bbbbbbbbbbbbb');
select * from logtest;

1.1 表中所有數據

SQL按照某一列數據去重並顯示整行信息

vGroup by和Max寫法

需求背景

按照時間升序在日志表中取出不msg不重復的前3條數據

select * from logtest
where id in (select Max(id) from logtest group by msg)
order by create_time asc limit 3;

SQL按照某一列數據去重並顯示整行信息


作  者:請叫我頭頭哥
出  處:http://www.cnblogs.com/toutou/
關於作者:專注於基礎平台的項目開發。如有問題或建議,請多多賜教!
版權聲明:本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。
特此聲明:所有評論和私信都會在第一時間回復。也歡迎園子的大大們指正錯誤,共同進步。或者直接私信
聲援博主:如果您覺得文章對您有幫助,可以點擊文章右下角推薦一下。您的鼓勵是作者堅持原創和持續寫作的最大動力!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM