請教一個mysql去重取最新記錄
ringa_lee
ringa_lee 2017-05-18 10:45:19
0
3
520

資料如下
id domain port email type name value ttl route def remark
2390 test.cn 80 123@qq.com 1 www 123.123.123.123 0 0 0 #test#2523 1.38 qq.com 1 www 123.123.123.123 1800 0 0

#一個表中有 2 個相同的數據,(除了 ttl 和 id 不一樣外),現在要保留最新的一條記錄(如 2523 ),請教如何操作

下面是需要用到的測試語句; 資料庫是 mysql 5.7

use test; CREATE TABLE test ( `id` int(11) NOT NULL AUTO_INCREMENT, `domain` varchar(100) COLLATE utf8_unicode_ci NOT NULL, `port` varchar(6) COLLATE utf8_unicode_ci DEFAULT '80', `email` varchar(45) COLLATE utf8_unicode_ci NOT NULL, `type` tinyint(4) DEFAULT NULL, `name` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, `value` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, `ttl` int(11) DEFAULT '0', `route` tinyint(4) DEFAULT '0', `def` tinyint(1) DEFAULT '0', `remark` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2721 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci INSERT INTO test.test (`id`, `domain`, `port`, `email`, `type`, `name`, `value`, `ttl`, `route`, `def`, `remark`) VALUES ('2390', 'www.test.cn', '80', '123@qq.com', '1', 'www', '123.123.123.123', '0', '0', '0', NULL); INSERT INTO test.test (`id`, `domain`, `port`, `email`, `type`, `name`, `value`, `ttl`, `route`, `def`, `remark`) VALUES ('2523', 'www.test.cn', '80', '123@qq.com', '1', 'www', '123.123.123.123', '1800', '0', '0', NULL);
ringa_lee
ringa_lee

ringa_lee

全部回覆 (3)
Peter_Zhu

抓住我的指出錯誤呀,讓我學習學習哪裡有問題。
從測試中刪除
where (id,domain,port,email代碼>,類型代碼>,名稱代碼>,值代碼>,路線代碼>,定義代碼>,remark) 不在(domain,port,email,type,name,value,route,def,remark) not in (
select * from (
select max(id) id,domain,port,email,type,name,value,route,def,remark
from test group bydomain,port,email,type,name,value,route,def,remarkselect * from (

select max(id) id, domain, port, email, 類型名稱路線def備註來自測試組,按連接埠電子郵件類型名稱代碼>,值代碼>,路線代碼>,定義代碼>,備註代碼>)tmp)
    世界只因有你

    從測試 GROUP BY 網域、連接埠、電子郵件、類型、名稱、值、路由、def、備註中選擇 max(id)、網域、連接埠、電子郵件、類型、名稱、值、路由、定義、備註;

      小葫芦

      給你一個產生刪除腳本的sql

      select concat("delete from test where id=",min(id),";") into outfile '/tmp/delete_test.sql' lines terminated by '\n' from test group by domain, port, email, type, name, value,route, def, remark;
        最新下載
        更多>
        網站特效
        網站源碼
        網站素材
        前端模板
        關於我們 免責聲明 Sitemap
        PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!