GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak najít duplicitní hodnoty v MySQL

Úvod

MySQL je databázová aplikace, která ukládá data do řádků a sloupců různých tabulek, aby se zabránilo duplicitě. Mohou se vyskytnout duplicitní hodnoty, což může ovlivnit výkon MySQL.

Tento průvodce vám ukáže, jak najít duplicitní hodnoty v databázi MySQL .

Předpoklady

  • Stávající instalace MySQL
  • Přihlašovací údaje k uživatelskému účtu root pro MySQL
  • Příkazový řádek / okno terminálu

Nastavení vzorové tabulky (volitelné)

Tento krok vám pomůže vytvořit vzorovou tabulku, se kterou budete pracovat. Pokud již máte databázi, na které můžete pracovat, přejděte k další části.

Otevřete okno terminálu a přepněte se do prostředí MySQL:

mysql –u root –p

Seznam existujících databází:

SHOW databases;

Vytvořte novou databázi, která ještě neexistuje:

CREATE database sampledb;

Vyberte tabulku, kterou jste právě vytvořili:

USE sampledb;

Vytvořte novou tabulku s následujícími poli:

CREATE TABLE dbtable (
  id INT PRIMARY KEY AUTO_INCREMENT,
  date_x VARCHAR(10) NOT NULL,
  system_x VARCHAR(50) NOT NULL,
  test VARCHAR(50) NOT NULL
);

Vložení řádků do tabulky:

INSERT INTO dbtable (date_x,system_x,test)
VALUES ('01/03/2020','system1','hard_drive'),
  ('01/04/2020','system2','memory'),
  ('01/10/2020','system2','processor'),
  ('01/14/2020','system3','hard drive'),
  ('01/10/2020','system2','processor'),
  ('01/20/2020','system4','hard drive'),
  ('01/24/2020','system5','memory'),
  ('01/29/2020','system6','hard drive'),
  ('02/02/2020','system7','motherboard'),
  ('02/04/2020','system8','graphics card'),
  ('02/02/2020','system7','motherboard'),
  ('02/08/2020','system9','hard drive');

Spusťte následující dotaz SQL:

SELECT * FROM dbtable
ORDER BY date_x;

Hledání duplikátů v MySQL

Najděte duplicitní hodnoty v jednom sloupci

Použijte GROUP BY funkce k identifikaci všech identických záznamů v jednom sloupci. Pokračujte pomocí COUNT() HAVING funkce pro zobrazení všech skupin s více než jedním záznamem.

SELECT
  test,
  COUNT(test)
FROM 
  dbtable
GROUP BY test
HAVING COUNT(test) > 1;

Najít duplicitní hodnoty ve více sloupcích

Možná budete chtít uvést přesné duplikáty se stejnými informacemi ve všech třech sloupcích.

SELECT
  date_x, COUNT(date_x),
  system_x, COUNT(system_x),
  test, COUNT(test)
FROM
  dbtable
GROUP BY
  date_x,
  system_x,
  test
HAVING COUNT(date_x)>1
  AND COUNT(system_x)>1
  AND COUNT(test)>1;

Tento dotaz funguje tak, že vybere a otestuje >1 stav na všech třech sloupcích. Výsledkem je, že ve výstupu jsou vráceny pouze řádky s duplicitními hodnotami.

Kontrola duplikátů ve více tabulkách pomocí INNER JOIN

Použijte funkci INNER JOIN k nalezení duplikátů, které existují ve více tabulkách.

Ukázka syntaxe pro INNER JOIN funkce vypadá takto:

SELECT column_name
  FROM table1
  INNER JOIN table2
  ON table1.column_name = table2.column name;

K otestování tohoto příkladu potřebujete druhou tabulku, která obsahuje některé informace duplikované z sampledb tabulku, kterou jsme vytvořili výše.

SELECT dbtable.date_x
  FROM dbtable
  INNER JOIN new_table
  ON dbtable.date_x = new_table.date_x;

Zobrazí se všechna duplicitní data, která existují mezi existujícími daty a new_table .


Ubuntu
  1. Jak najít a odstranit duplicitní fotografie v Linuxu

  2. Jak najít duplicitní soubory v Linuxu

  3. Jak najdu svou IP adresu v Ubuntu

  1. Jak vytvořit tabulku v MySQL

  2. Jak nainstalovat MySQL 8.0 v Ubuntu 18.04

  3. Jak najít konfigurační soubory MySQL, PHP a Apache

  1. Jak nainstalovat MySQL na Ubuntu 20.04

  2. Jak najít a ukončit / zabít proces MySQL

  3. Jak odstranit duplicitní řádky v MySQL