Mysql根據(jù)字段查詢和刪除重復(fù)數(shù)據(jù)

實際開發(fā)中遇到一個問題,線上系統(tǒng)報錯,需要手動向庫里插入數(shù)據(jù),然后點了兩次手動發(fā)送按鈕,導(dǎo)致庫中有重復(fù)的數(shù)據(jù)。需求:根據(jù)某個字段查詢重復(fù)數(shù)據(jù)并刪除

1.查詢出所有數(shù)據(jù)進行分組之后,和重復(fù)數(shù)據(jù)的重復(fù)次數(shù)的查詢數(shù)據(jù),先列下:

select * from table1 t1 where (t1.username) in  (select username from table1 group by username  having count(*) > 1)

2.刪除重復(fù)數(shù)據(jù)并保留id最小的數(shù)據(jù)(以下是搜出來的)

delete from people 
where peopleId  in (select  peopleId  from people  group  by  username   having  count(username) > 1)
and rowid not in (select min(rowid) from  people  group by username  having count(username )>1)

但是執(zhí)行會報錯,

You can't specify target table for update in FROM clause

意思是說mysql中You can't specify target table <tbl> for update in FROM clause錯誤的意思是說,不能先select出同一表中的某些值,再update這個表(在同一語句中)。
這是需要一個中間臨時表,將刪除改成以下

delete from 
people 
where 
peopleId in 
    (select peopleId 
        from 
        (select id from people 
            where 
            peopleId in     (select peopleId from people group by username having count(username)>1) 
            and peopleId not in(select min(peopleId) from people group by username having count(username)>1)
        ) as tmpresult
    )

多字段屬性刪除

DELETE
FROM
    user_organization_access a
WHERE
        (a.user_id, a.organization_id) IN (
            select user_id,
                   organization_id from (
        SELECT
            user_id,
            organization_id
        FROM
            user_organization_access
        GROUP BY
            user_id,
            organization_id
        HAVING
                count(*) > 1)t1
    )
  AND organization_login_id NOT IN (
      select * from (
    SELECT
        min(organization_login_id)
    FROM
        user_organization_access
    GROUP BY
        user_id,
        organization_id
    HAVING
            count(*) > 1) t
)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • MYSQL 基礎(chǔ)知識 1 MySQL數(shù)據(jù)庫概要 2 簡單MySQL環(huán)境 3 數(shù)據(jù)的存儲和獲取 4 MySQL基本操...
    Kingtester閱讀 8,075評論 5 115
  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當在唯一索引所對應(yīng)的列上鍵入重復(fù)值時,會觸發(fā)此異常。 O...
    我想起個好名字閱讀 6,038評論 0 9
  • 什么是數(shù)據(jù)庫? 數(shù)據(jù)庫是存儲數(shù)據(jù)的集合的單獨的應(yīng)用程序。每個數(shù)據(jù)庫具有一個或多個不同的API,用于創(chuàng)建,訪問,管理...
    chen_000閱讀 4,155評論 0 19
  • MYSQL執(zhí)行如下語句報錯: UPDATE sc SET grade =grade*1.05 WHERE grad...
    朝畫夕拾閱讀 7,565評論 2 3
  • 時隔了兩個周,感覺像是過了一個月那么久。 當初立下心志,每周寫一篇日記,記錄我這一生所經(jīng)歷的大大小小的事。平淡的、...
    出于你默然不語閱讀 1,687評論 5 6

友情鏈接更多精彩內(nèi)容