Mysql
 sql >> база данни >  >> RDS >> Mysql

MySql:премахване на редове в таблицата в зависимост от дублиращи се стойности на колони?

Мисля, че можете просто да опитате да добавите УНИКАЛЕН ИНДЕКС, като използвате IGNORE:

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

MySQL трябва да отговори с нещо като:

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

Разбира се, вие ще оставите на MySQL да реши кои редове да премахнете.

РЕДАКТИРАНЕ:

това работи за толкова колони, колкото искате:

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

проверете документацията на MySQL на СЪЗДАВАНЕ НА ИНДЕКС . Често срещан проблем (поне един, с който се сблъсках веднъж) е да забравя, че NULL = NULL не е вярно (но NULL ), следователно {42, NULL} и {42, NULL} са разрешени за УНИКАЛЕН индекс на две колони.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да настроя ASP.NET MVC 2 с MySQL?

  2. единична фиксирана таблица с множество колони срещу гъвкави абстрактни таблици

  3. конвертирайте mysql резултата в json с правилни типове

  4. Как да върна 0 от MySQL db, когато терминът в клаузата Where не е в базата данни?

  5. Името на таблицата или дължината на името на колоната влияят на производителността?