当前位置:网站首页>sql 筛选查询重复列

sql 筛选查询重复列

2020-11-09 22:26:10 龘游戏人生龘

id_cardxx 为 table;id,id_card,phone均为字段

-- 显示重复列 select * from 表名 where 列名 in (select 列名 from 表名 group by 列名 having COUNT(*)>1) order by 列名

select * from file_selection where mash in (select mash from file_selection group by mash having COUNT(*)>1) order by mash

-- 查询重复数据但排除 最小id MIN( id )

SELECT *
    FROM
        id_cardxx c 
    WHERE
        EXISTS (
        SELECT
            a.id 
        FROM
            id_cardxx a,
            ( SELECT id_card, MIN( id ) AS rid FROM id_cardxx GROUP BY id_card HAVING count( 1 ) > 1 ) b 
        WHERE
            a.id_card = b.id_card 
            AND a.id != b.rid 
            AND c.id = a.id 
        ) 
        AND id > 8071 
        AND phone IS NULL 
    ORDER BY
        c.id_card;

-- 修改则需要将查询出来的数据当作新表在查询一次 及

UPDATE id_cardxx 
set 修改字段 = 'xxxx'
WHERE id in ( SELECT....end ) as xx1

 -- 完整sql

UPDATE id_cardxx 
set source = 'xxxx'
WHERE id in (
        SELECT xx1.id FROM
        (
        SELECT id
            FROM
                id_cardxx c 
            WHERE
                EXISTS (
                SELECT
                    a.id 
                FROM
                    id_cardxx a,
                    ( SELECT id_card, MIN( id ) AS rid FROM id_cardxx GROUP BY id_card HAVING count( 1 ) > 1 ) b 
                WHERE
                    a.id_card = b.id_card 
                    AND a.id != b.rid 
                    AND c.id = a.id 
                ) 
                AND id > 8071 
                AND phone IS NULL 
        ) as xx1
)

 

版权声明
本文为[龘游戏人生龘]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/3628379/blog/4710169