zoukankan      html  css  js  c++  java
  • mysql删除重复记录并且只保留一条

    Select 重复字段 From 表 Group By 重复字段 Having Count(*)>1

    count(*)与count(列名)的区别:

        count(*)将返回表格中所有存在的行的总数包括值为null的行,然而count(列名)将返回表格中除去null以外的所有行的总数(有默认值的列也会被计入)

    删除表中多余重复试题并且只留1条:

    DELETE
    FROM
    	dept
    WHERE
    	dname IN (
    		SELECT
    			t.dname
    		FROM
    			(
    				SELECT
    					dname
    				FROM
    					dept
    				GROUP BY
    					dname
    				HAVING
    					count(1) > 1
    			) t
    	)
    AND deptno NOT IN (
    SELECT
    	dt.mindeptno
    FROM
    	(
    		SELECT
    			min(deptno) AS mindeptno
    		FROM
    			dept
    		GROUP BY
    			dname
    		HAVING
    			count(1) > 1
    	) dt
    

      

    DELETE
    FROM
        dept
    WHERE
        deptno NOT IN (
            SELECT
                dt.minno
            FROM
                (
                    SELECT
                        MIN(deptno) AS minno
                    FROM
                        dept
                    GROUP BY
                        dname
                ) dt
        )
    DELETE 
    FROM
        table_name AS ta 
    WHERE
        ta.唯一键 <> (
    SELECT
        t.maxid 
    FROM
        ( SELECT max( tb.唯一键 ) AS maxid FROM table_name AS tb WHERE ta.判断重复的列 = tb.判断重复的列 ) t 
        );

    来源    https://blog.csdn.net/n950814abc/article/details/82284838 

    SQL 删除重复记录方法:https://www.cnblogs.com/shy1766IT/p/5185719.html

  • 相关阅读:
    Oracle EBS json
    OAF--基础
    Oracle EBS FA 本年折旧
    Oracle EBS FA 获取累计折旧
    SOAP REST
    Oracle EBS FA 资产取值
    Java ——基础语法
    PL/SQL APIs for Concurrent Processing
    Using Globals in Oracle Reports (Doc ID 34751.1)
    Using SRW Packaged Procedures In Reports (Doc ID 61643.1)
  • 原文地址:https://www.cnblogs.com/shy1766IT/p/12221006.html
Copyright © 2011-2022 走看看