sql >> Databáze >  >> RDS >> Mysql

Mysql Duplicitní řádky (duplikát zjištěn pomocí 2 sloupců)

delete from myTable 
where id not in
(select min(id)
from myTable
group by A, B)

tj. výběr v závorkách vrátí první id pro každé seskupení A a B; smazáním všech ID, která nejsou v této sadě, odstraníte všechny výskyty kombinace A-plus-B, které jsou "následující" po jejím prvním výskytu.

UPRAVIT :tato syntaxe se zdá být problematická:viz hlášení o chybě:

http://bugs.mysql.com/bug.php?id=5037

Možné řešení je provést toto:

delete from myTable 
where id not in
(
      select minid from 
      (select min(id) as minid from myTable group by A, B) as newtable
) 


  1. Laravel 4 neumí spouštět celé RAW dotazy

  2. Jak najít duplicitní záznamy v Accessu

  3. sql group pouze po řádcích, které jsou za sebou

  4. Filtrování podle možností OFFSET-FETCH ve výběrovém dotazu - SQL Server / Výukový program TSQL, část 118