• sql 删除重复的数据,保留一条,并且保留update_time最大的那条


    近期面试的时候,考官出了一道题,当时没有做出来。第二天灵光乍现吧,写出来了,特此记录一下。

    有一张表t,三个字段,自增id,name,update_time,删除name重复的行,保留update_time最大的那一条,只保留一条

    DELETE
    FROM
    	t
    WHERE
    	t.`name` IN (
    		SELECT
    			t.`name`
    		FROM
    			(SELECT * FROM t) t
    		GROUP BY
    			t.`name`
    		HAVING
    			count(1) > 1
    	)
    AND t.id NOT IN (
    	SELECT
    		substring_index(max(t.new_u_time), ',', - 1)
    	FROM
    		(
    			SELECT
    				t.id,
    				t.`name`,
    				t.update_time,
    				CONCAT(t.update_time, ',', t.id) new_u_time
    			FROM
    				t
    		) t
    	GROUP BY
    		t.`name`
    	HAVING
    		count(1) > 1
    )
    
    
    
    
    

    说明:如果是随便删除,保留一行,那大家应该都会,这里就是可能会出现update_time重复的情况,所以需要update_time和id concat 起来,然后取最大值,这样就不会重复了

  • 相关阅读:
    volatility 命令
    pikachu-SQL注入
    pikachu-环境搭建
    pikachu-暴力破解
    pikachu-XSS
    john and hydra using de-ice1.100
    web 攻击靶机解题过程
    网络对抗实验四
    网络对抗实验三
    网络对抗实验二
  • 原文地址:https://www.cnblogs.com/theone67/p/12515666.html
Copyright © 2020-2023  润新知