MySQL sorgusu yinelenen verileri nasıl işler?Yinelenen veri ifadesini kaldırmak için filtreleyin

MySQLSorgular yinelenen verileri nasıl işler?Yinelenen veri ifadesini kaldırmak için filtreleyin

MySQL Yinelenen verileri işleme

Bazı MySQL veri tablolarında mükerrer kayıtlar olabilir.Bazı durumlarda mükerrer verilerin varlığına izin veriyoruz, ancak bazen bu mükerrer verileri de silmemiz gerekiyor.

Bu bölümde, veri tablosundaki yinelenen verilerin nasıl engelleneceğini ve veri tablosundaki yinelenen verilerin nasıl silineceğini anlatacağız.


Tablolarda yinelenen verileri önleme

MySQL veri tablosunda belirtilen alanı şu şekilde ayarlayabilirsiniz: BİRİNCİL ANAHTAR veya BENZERSİZ (benzersiz) Verilerin benzersizliğini sağlamak için dizin.

Bir örnek deneyelim: Aşağıdaki tabloda dizinler ve birincil anahtarlar yoktur, bu nedenle tablo birden çok yinelenen kayda izin verir.

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

Tabloda ad ve soyadı alanlarını ayarlamak istiyorsanız, veriler tekrarlanamaz, verilerin benzersizliğini ayarlamak için çift birincil anahtar modunu ayarlayabilirsiniz.Çift birincil anahtarı ayarlarsanız, o anahtarın varsayılan değeri NULL olamaz, ancak NULL DEĞİL olarak ayarlanabilir.Aşağıdaki gibi:

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

Benzersiz bir dizin belirlersek, yinelenen verileri eklerken, SQL ifadesi başarıyla yürütülemez ve bir hata verir.

INSERT IGNORE INTO ve INSERT INTO arasındaki fark, INSERT IGNORE'un veritabanında zaten var olan verileri yok saymasıdır.Veritabanında veri yoksa yeni veri ekler, veri varsa bu veriyi atlar.Bu sayede veri tabanındaki mevcut veriler korunabilir ve boşluğa veri girme amacına ulaşılabilir.

Aşağıdaki örnek, hatasız çalışan ve veri tablosuna yinelenen veri eklemeyen INSERT IGNORE INTO'yu kullanır:

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 Veri eklerken, kaydın benzersizliği ayarlandıktan sonra, yinelenen veri eklenirse hata döndürülmez, yalnızca uyarı döndürülür.Ve REPLACE INTO, birincil veya benzersiz bir kayıt varsa, önce onu silin.Yeni bir kayıt ekleyin.

Verilerinizin benzersizliğini ayarlamanın başka bir yolu da şuna benzer EŞSİZ bir dizin eklemektir:

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

İstatistikler yinelenen veriler

Aşağıda, tablodaki first_name ve last_name'nin yinelenen kayıtlarının sayısını sayacağız:

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

Yukarıdaki sorgu ifadesi, person_tbl tablosundaki yinelenen kayıtların sayısını döndürür.Genel olarak, yinelenen değerleri sorgulamak için aşağıdakileri yapın:

  • Hangi sütunun olası yinelenen değerleri içerdiğini belirleyin.
  • Bu sütunları listelemek için sütun seçim listesinde COUNT(*) kullanın.
  • GROUP BY yan tümcesinde listelenen sütunlar.
  • HAVING yan tümcesi, 1'den büyük tekrar sayısını ayarlar.

yinelenen verileri filtrele

Benzersiz verileri okumanız gerekiyorsa, yinelenen verileri filtrelemek için SELECT ifadesinde DISTINCT anahtar sözcüğünü kullanabilirsiniz.

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

Bir tablodan benzersiz verileri okumak için GROUP BY'ı da kullanabilirsiniz:

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

veri tekilleştirme

Veri tablosundaki yinelenen verileri silmek istiyorsanız, aşağıdaki SQL deyimini kullanabilirsiniz:

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;

Tabii ki, tablodaki mükerrer kayıtları silmek için veri tablosuna INDEX (index) ve PRIMAY KEY (birincil anahtar) da ekleyebilirsiniz.Aşağıdaki gibi yöntemler:

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

Umut Chen Weiliang Blogu ( https://www.chenweiliang.com/ ) paylaştı "MySQL yinelenen verileri nasıl sorgular ve işler?Filtreleme ve Tekilleştirme İfadeleri" size yardımcı olacaktır.

Bu makalenin bağlantısını paylaşmaya hoş geldiniz:https://www.chenweiliang.com/cwl-499.html

En son güncellemeleri almak için Chen Weiliang'ın blogunun Telegram kanalına hoş geldiniz!

🔔 Kanalın üst dizinindeki değerli "ChatGPT İçerik Pazarlama Yapay Zeka Aracı Kullanım Kılavuzunu" alan ilk kişi olun! 🌟
📚 Bu rehber çok büyük değer içeriyor, 🌟Bu nadir bir fırsat, kaçırmayın! ⏰⌛💨
İsterseniz paylaşın ve beğenin!
Paylaşımlarınız ve beğenileriniz bizim sürekli motivasyonumuz!

 

发表 评论

E-posta hesabınız yayımlanmayacak. 必填 项 已 用 * 标注

yukarı kaydır