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

Jak odstranit duplicitní řádky a aktualizovat tabulku

Chcete-li aktualizovat tabulku objednávek, něco jako:

update  orders
join    regions r1
on      r1.id = orders.region_id
set     orders.region_id = 
        (
        select  min(r2.id)
        from    regions r2
        where   r2.name = r1.name
        )

Poté můžete duplicitní řádky odstranit pomocí:

delete  regions
from    regions
where   id not in
        (
        select  id
        from    (
                select  min(id) as id
                from    regions
                group by
                    name
                ) as SubqueryAlias
        )

Dvojitý poddotaz je nutný, aby se předešlo chybě MySQL ERROR 1093 (HY000) at line 36: You can't specify target table 'regions' for update in FROM clause .




  1. Jak číst poslední řádek s SQL Server

  2. Změna z SQLite na PostgreSQL v novém projektu Rails

  3. Kód chyby:1406. Data jsou pro sloupec příliš dlouhá – MySQL

  4. Zahodit cizí klíč, aniž byste znali název omezení?