Како MySQL барањето се справува со дупликат податоци?Филтрирајте за да ја отстраните изјавата за дупликат податоци

MySQL,Како пребарувањата се справуваат со дупликат податоци?Филтрирајте за да ја отстраните изјавата за дупликат податоци

MySQL, Ракување со дупликат податоци

Може да има дупликат записи во некои табели со податоци на MySQL. Во некои случаи, дозволуваме постоење на дупликат податоци, но понекогаш и треба да ги избришеме овие дупликати податоци.

Во ова поглавје, ќе воведеме како да спречите дупликат податоци во табелата со податоци и како да ги избришете дупликатите податоци во табелата со податоци.


Спречете дупликат податоци во табелите

Можете да го поставите наведеното поле во табелата со податоци MySQL како ПРИМАРЕН КЛУЧ или УНИКАТНО (уникатно) Индекс за да се обезбеди единственоста на податоците.

Ајде да пробаме пример: Нема индекси и примарни клучеви во табелата подолу, така што табелата дозволува повеќекратни дупликати записи.

CREATE TABLE person_tbl
(
    first_name CHAR(20),
    last_name CHAR(20),
    sex CHAR(10)
);

Ако сакате да ги поставите полињата first_name и last_name во табелата, податоците не може да се повторат, можете да поставите режим на двоен примарен клуч за да ја поставите единственоста на податоците. Ако го поставите двојниот примарен клуч, стандардната вредност на тој клуч не може да биде NULL, но може да се постави на NOT NULL.Како што следи:

CREATE TABLE person_tbl
(
   first_name CHAR(20) NOT NULL,
   last_name CHAR(20) NOT NULL,
   sex CHAR(10),
   PRIMARY KEY (last_name, first_name)
);

Ако поставиме единствен индекс, тогаш кога вметнуваме дупликат податоци, изјавата SQL нема да успее да се изврши успешно и ќе направи грешка.

Разликата помеѓу INSERT IGNORE INTO и INSERT INTO е во тоа што INSERT IGNORE ги игнорира податоците што веќе постојат во базата на податоци.На овој начин може да се зачуваат постоечките податоци во базата и да се постигне целта за вметнување на податоците во празнината.

Следниот пример користи INSERT IGNORE INTO, кој се извршува без грешка и без вметнување дупликат податоци во табелата со податоци:

mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)
    -> VALUES( 'Jay', 'Thomas');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)
    -> VALUES( 'Jay', 'Thomas');
Query OK, 0 rows affected (0.00 sec)

INSERT IGNORE INTO При вметнување податоци, откако ќе се постави уникатноста на записот, ако се вметнат дупликат податоци, нема да се врати грешка, туку ќе се врати само предупредување.И REPLACE INTO во Ако има примарен или единствен запис, тој прво ќе се избрише.Вметнете нов запис.

Друг начин да ја поставите уникатноста на вашите податоци е да додадете УНИКАТЕН индекс како овој:

CREATE TABLE person_tbl
(
   first_name CHAR(20) NOT NULL,
   last_name CHAR(20) NOT NULL,
   sex CHAR(10)
   UNIQUE (last_name, first_name)
);

Статистика дупликат податоци

Подолу ќе го броиме бројот на дупликат записи за име и презиме во табелата:

mysql> SELECT COUNT(*) as repetitions, last_name, first_name
    -> FROM person_tbl
    -> GROUP BY last_name, first_name
    -> HAVING repetitions > 1;

Горенаведената изјава за барање ќе го врати бројот на дупликати записи во табелата person_tbl.Во принцип, за да побарате дупликат вредности, направете го следново:

  • Определете која колона содржи можни дупликати вредности.
  • Користете COUNT(*) во списокот за избор на колони за да ги наведете тие колони.
  • Колони наведени во клаузулата GROUP BY.
  • Клаузулата HAVING го поставува бројот на повторувања поголем од 1.

филтрирајте дупликат податоци

Ако треба да читате единствени податоци, можете да го користите клучниот збор DISTINCT во изјавата SELECT за да ги филтрирате дупликатите податоци.

mysql> SELECT DISTINCT last_name, first_name
    -> FROM person_tbl;

Можете исто така да користите GROUP BY за читање единствени податоци од табела:

mysql> SELECT last_name, first_name
    -> FROM person_tbl
    -> GROUP BY (last_name, first_name);

дупликат податоци

Ако сакате да избришете дупликат податоци во табелата со податоци, можете да ја користите следнава изјава SQL:

mysql> CREATE TABLE tmp SELECT last_name, first_name, sex
    ->                  FROM person_tbl;
    ->                  GROUP BY (last_name, first_name, sex);
mysql> DROP TABLE person_tbl;
mysql> ALTER TABLE tmp RENAME TO person_tbl;

Се разбира, можете исто така да додадете INDEX (индекс) и PRIMAY KEY (примарен клуч) во табелата со податоци за да избришете дупликат записи во табелата.Методи како подолу:

mysql> ALTER IGNORE TABLE person_tbl
    -> ADD PRIMARY KEY (last_name, first_name);

Блог на Hope Chen Weiliang ( https://www.chenweiliang.com/ ) сподели „Како MySQL бара и се справува со дупликати податоци?Изјави за филтрирање и дедупликација“ ќе ви помогне.

Добредојдовте да ја споделите врската од оваа статија:https://www.chenweiliang.com/cwl-499.html

Добредојдовте на Телеграмскиот канал на блогот на Чен Веилијанг за да ги добиете најновите ажурирања!

🔔 Бидете први што ќе го добиете вредниот „Водич за употреба на алатката за AI за маркетинг на содржина на ChatGPT“ во горниот директориум на каналот! 🌟
📚 Овој водич содржи огромна вредност, 🌟Ова е ретка можност, не ја пропуштајте! ⏰⌛💨
Споделете и лајкнете ако ви се допаѓа!
Вашето споделување и лајкови се наша континуирана мотивација!

 

评论

Вашата адреса за е-пошта нема да биде објавена. Се користат задолжителните полиња * Етикета

скролувајте до врвот