Како МиСКЛ упит рукује дуплим подацима?Филтрирајте да бисте уклонили дуплиране податке

МиСКЛКако упити рукују дуплим подацима?Филтрирајте да бисте уклонили дуплиране податке

МиСКЛ Руковање дуплираним подацима

Можда постоје дупли записи у неким МиСКЛ табелама података.У неким случајевима дозвољавамо постојање дупликата података, али понекад такође морамо да избришемо ове дупле податке.

У овом поглављу ћемо представити како да спречите дупле податке у табели података и како да избришете дупле податке у табели података.


Спречите дуплирање података у табелама

Можете поставити наведено поље у МиСКЛ табели података као ПРИМАРНИ КЉУЧ или ЈЕДИНСТВЕН (јединствен) Индекс који обезбеђује јединственост података.

Покушајмо са примером: У табели испод нема индекса и примарних кључева, тако да табела дозвољава вишеструке дупле записе.

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

Ако желите да подесите поља име и презиме у табели, подаци не могу да се понављају, можете да подесите режим двоструког примарног кључа да бисте подесили јединственост података. Ако подесите дупли примарни кључ, подразумевана вредност тог кључа не може бити НУЛЛ, али се може поставити на НОТ НУЛЛ.Као што следи:

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)
);

Ако поставимо јединствени индекс, онда када убацујемо дупле податке, СКЛ наредба неће успети да се успешно изврши и да ће изазвати грешку.

Разлика између ИНСЕРТ ИГНОРЕ ИНТО и ИНСЕРТ ИНТО је у томе што ИНСЕРТ ИГНОРЕ игнорише податке који већ постоје у бази.Ако у бази података нема података, убациће нове податке, а ако постоје, прескочиће ове податке.На овај начин се могу сачувати постојећи подаци у бази података и постићи сврха убацивања података у празнину.

Следећи пример користи ИНСЕРТ ИГНОРЕ ИНТО, који се извршава без грешке и не убацује дупле податке у табелу података:

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)

ИНСЕРТ ИГНОРЕ ИНТО Приликом уметања података, након што је постављена јединственост записа, ако се уметну дупли подаци, неће бити враћена грешка, већ ће бити враћено само упозорење.И ЗАМЕНИ У ако постоји примарни или јединствени запис, прво га избришите.Уметните нови запис.

Други начин да подесите јединственост ваших података је да додате ЈЕДИНСТВЕН индекс као што је овај:

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;

Горњи израз упита ће вратити број дупликата записа у табели персон_тбл.Генерално, да бисте поставили упит за дупликате вредности, урадите следеће:

  • Одредите која колона садржи могуће дуплиране вредности.
  • Користите ЦОУНТ(*) на листи за избор колона да бисте навели те колоне.
  • Колоне наведене у клаузули ГРОУП БИ.
  • Клаузула ХАВИНГ поставља број понављања већи од 1.

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

Ако треба да прочитате јединствене податке, можете користити кључну реч ДИСТИНЦТ у СЕЛЕЦТ изразу да бисте филтрирали дупле податке.

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

Такође можете да користите ГРОУП БИ за читање јединствених података из табеле:

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

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

Ако желите да избришете дупликате података у табели података, можете користити следећи СКЛ израз:

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;

Наравно, такође можете додати ИНДЕКС (индекс) и ПРИМАИ КЕИ (примарни кључ) у табелу са подацима да бисте избрисали дупликате записа у табели.Методе као у наставку:

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

Блог Хопе Цхен Веилианг ( https://www.chenweiliang.com/ ) дели „Како МиСКЛ поставља упите и обрађује дупле податке?Изјаве о филтрирању и уклањању дупликата" ће вам помоћи.

Добродошли да поделите везу овог чланка:https://www.chenweiliang.com/cwl-499.html

Добродошли на Телеграм канал блога Цхен Веилианг-а да бисте добили најновија ажурирања!

🔔 Будите први који ће добити драгоцени „Водич за коришћење алата за вештачку интелигенцију за маркетинг садржаја ЦхатГПТ“ у главном директоријуму канала! 🌟
📚 Овај водич садржи огромну вредност, 🌟Ово је ретка прилика, не пропустите је! ⏰⌛💨
Поделите и лајкујте ако желите!
Ваше дељење и лајкови су наша стална мотивација!

 

评论

Ваша емаил адреса неће бити објављена. Обавезна поља се користе * Ознака

Иди на врх