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

MySql:odstranit řádky tabulky v závislosti na duplicitních hodnotách sloupců?

Myslím, že byste mohli jednoduše zkusit přidat UNIQUE INDEX pomocí IGNORE:

ALTER IGNORE TABLE `table` ADD UNIQUE INDEX `name` (`column`);

MySQL by mělo odpovědět něco jako:

Query OK, 4524 rows affected (1.09 sec)
Records: 4524 Duplicates: 9342 Warnings: 0

Rozhodnutí, které řádky vypustíte, samozřejmě necháte na MySQL.

EDIT:

toto funguje pro tolik sloupců, kolik chcete:

ALTER IGNORE TABLE `table` ADD UNIQUE INDEX `name` (`col1`, `col2`, `col3`);

zkontrolujte dokumentaci MySQL na stránce CREATE INDEX . Častým problémem (alespoň jedním, na který jsem jednou narazil) je zapomenout, že NULL = NULL není pravda (ale NULL ), proto jsou pro UNIQUE index ve dvou sloupcích povoleny {42, NULL} a {42, NULL}.



  1. Přesunout systémové databáze v clusteru převzetí služeb při selhání serveru SQL Server

  2. Neshoda mezi hodnotami DATETIME v databázích H2 a MySQL vložených z Java/Kotlin

  3. efektivní způsob, jak otestovat, zda existuje řádek tabulky

  4. SQL CREATE DATABASE Syntaxe – uvedena v DBMS