Làm cách nào để tìm các bản sao trong truy vấn CHỌN?

Bản tóm tắt. trong hướng dẫn này, bạn sẽ học cách tìm các giá trị trùng lặp của một hoặc nhiều cột trong MySQL

Sao chép dữ liệu xảy ra vì nhiều lý do. Tìm các giá trị trùng lặp là một trong những nhiệm vụ quan trọng mà bạn phải xử lý khi làm việc với cơ sở dữ liệu

Thiết lập một bảng mẫu

Đầu tiên, tạo một bảng tên là contacts với bốn cột. id, first_name,

INSERT INTO contacts [first_name,last_name,email] VALUES ['Carine ','Schmitt','carine.schmitt@verizon.net'], ['Jean','King','jean.king@me.com'], ['Peter','Ferguson','peter.ferguson@google.com'], ['Janine ','Labrune','janine.labrune@aol.com'], ['Jonas ','Bergulfsen','jonas.bergulfsen@mac.com'], ['Janine ','Labrune','janine.labrune@aol.com'], ['Susan','Nelson','susan.nelson@comcast.net'], ['Zbyszek ','Piestrzeniewicz','zbyszek.piestrzeniewicz@att.net'], ['Roland','Keitel','roland.keitel@yahoo.com'], ['Julie','Murphy','julie.murphy@yahoo.com'], ['Kwai','Lee','kwai.lee@google.com'], ['Jean','King','jean.king@me.com'], ['Susan','Nelson','susan.nelson@comcast.net'], ['Roland','Keitel','roland.keitel@yahoo.com'];

Code language: SQL [Structured Query Language] [sql]
0 và

INSERT INTO contacts [first_name,last_name,email] VALUES ['Carine ','Schmitt','carine.schmitt@verizon.net'], ['Jean','King','jean.king@me.com'], ['Peter','Ferguson','peter.ferguson@google.com'], ['Janine ','Labrune','janine.labrune@aol.com'], ['Jonas ','Bergulfsen','jonas.bergulfsen@mac.com'], ['Janine ','Labrune','janine.labrune@aol.com'], ['Susan','Nelson','susan.nelson@comcast.net'], ['Zbyszek ','Piestrzeniewicz','zbyszek.piestrzeniewicz@att.net'], ['Roland','Keitel','roland.keitel@yahoo.com'], ['Julie','Murphy','julie.murphy@yahoo.com'], ['Kwai','Lee','kwai.lee@google.com'], ['Jean','King','jean.king@me.com'], ['Susan','Nelson','susan.nelson@comcast.net'], ['Roland','Keitel','roland.keitel@yahoo.com'];

Code language: SQL [Structured Query Language] [sql]
1

CREATE TABLE contacts [ id INT PRIMARY KEY AUTO_INCREMENT, first_name VARCHAR[50] NOT NULL, last_name VARCHAR[50] NOT NULL, email VARCHAR[255] NOT NULL ];

Code language: SQL [Structured Query Language] [sql]

Thứ hai, chèn các hàng vào bảng contacts

INSERT INTO contacts [first_name,last_name,email] VALUES ['Carine ','Schmitt','carine.schmitt@verizon.net'], ['Jean','King','jean.king@me.com'], ['Peter','Ferguson','peter.ferguson@google.com'], ['Janine ','Labrune','janine.labrune@aol.com'], ['Jonas ','Bergulfsen','jonas.bergulfsen@mac.com'], ['Janine ','Labrune','janine.labrune@aol.com'], ['Susan','Nelson','susan.nelson@comcast.net'], ['Zbyszek ','Piestrzeniewicz','zbyszek.piestrzeniewicz@att.net'], ['Roland','Keitel','roland.keitel@yahoo.com'], ['Julie','Murphy','julie.murphy@yahoo.com'], ['Kwai','Lee','kwai.lee@google.com'], ['Jean','King','jean.king@me.com'], ['Susan','Nelson','susan.nelson@comcast.net'], ['Roland','Keitel','roland.keitel@yahoo.com'];

Code language: SQL [Structured Query Language] [sql]

Thứ ba, truy vấn dữ liệu từ bảng liên hệ

SELECT * FROM contacts ORDER BY email;

Code language: SQL [Structured Query Language] [sql]

Trong bảng contacts, chúng tôi có một số hàng có các giá trị trùng lặp trong các cột first_name,

INSERT INTO contacts [first_name,last_name,email] VALUES ['Carine ','Schmitt','carine.schmitt@verizon.net'], ['Jean','King','jean.king@me.com'], ['Peter','Ferguson','peter.ferguson@google.com'], ['Janine ','Labrune','janine.labrune@aol.com'], ['Jonas ','Bergulfsen','jonas.bergulfsen@mac.com'], ['Janine ','Labrune','janine.labrune@aol.com'], ['Susan','Nelson','susan.nelson@comcast.net'], ['Zbyszek ','Piestrzeniewicz','zbyszek.piestrzeniewicz@att.net'], ['Roland','Keitel','roland.keitel@yahoo.com'], ['Julie','Murphy','julie.murphy@yahoo.com'], ['Kwai','Lee','kwai.lee@google.com'], ['Jean','King','jean.king@me.com'], ['Susan','Nelson','susan.nelson@comcast.net'], ['Roland','Keitel','roland.keitel@yahoo.com'];

Code language: SQL [Structured Query Language] [sql]
0 và

INSERT INTO contacts [first_name,last_name,email] VALUES ['Carine ','Schmitt','carine.schmitt@verizon.net'], ['Jean','King','jean.king@me.com'], ['Peter','Ferguson','peter.ferguson@google.com'], ['Janine ','Labrune','janine.labrune@aol.com'], ['Jonas ','Bergulfsen','jonas.bergulfsen@mac.com'], ['Janine ','Labrune','janine.labrune@aol.com'], ['Susan','Nelson','susan.nelson@comcast.net'], ['Zbyszek ','Piestrzeniewicz','zbyszek.piestrzeniewicz@att.net'], ['Roland','Keitel','roland.keitel@yahoo.com'], ['Julie','Murphy','julie.murphy@yahoo.com'], ['Kwai','Lee','kwai.lee@google.com'], ['Jean','King','jean.king@me.com'], ['Susan','Nelson','susan.nelson@comcast.net'], ['Roland','Keitel','roland.keitel@yahoo.com'];

Code language: SQL [Structured Query Language] [sql]
1. Hãy học cách tìm chúng

Tìm các giá trị trùng lặp trong một cột

Việc tìm các giá trị trùng lặp trong một cột của bảng, bạn sử dụng theo các bước sau

  1. Đầu tiên, sử dụng mệnh đề

    INSERT INTO contacts [first_name,last_name,email] VALUES ['Carine ','Schmitt','carine.schmitt@verizon.net'], ['Jean','King','jean.king@me.com'], ['Peter','Ferguson','peter.ferguson@google.com'], ['Janine ','Labrune','janine.labrune@aol.com'], ['Jonas ','Bergulfsen','jonas.bergulfsen@mac.com'], ['Janine ','Labrune','janine.labrune@aol.com'], ['Susan','Nelson','susan.nelson@comcast.net'], ['Zbyszek ','Piestrzeniewicz','zbyszek.piestrzeniewicz@att.net'], ['Roland','Keitel','roland.keitel@yahoo.com'], ['Julie','Murphy','julie.murphy@yahoo.com'], ['Kwai','Lee','kwai.lee@google.com'], ['Jean','King','jean.king@me.com'], ['Susan','Nelson','susan.nelson@comcast.net'], ['Roland','Keitel','roland.keitel@yahoo.com'];

    Code language: SQL [Structured Query Language] [sql]
    7 để nhóm tất cả các hàng theo cột mục tiêu, là cột mà bạn muốn kiểm tra trùng lặp
  2. Sau đó, dùng hàm

    INSERT INTO contacts [first_name,last_name,email] VALUES ['Carine ','Schmitt','carine.schmitt@verizon.net'], ['Jean','King','jean.king@me.com'], ['Peter','Ferguson','peter.ferguson@google.com'], ['Janine ','Labrune','janine.labrune@aol.com'], ['Jonas ','Bergulfsen','jonas.bergulfsen@mac.com'], ['Janine ','Labrune','janine.labrune@aol.com'], ['Susan','Nelson','susan.nelson@comcast.net'], ['Zbyszek ','Piestrzeniewicz','zbyszek.piestrzeniewicz@att.net'], ['Roland','Keitel','roland.keitel@yahoo.com'], ['Julie','Murphy','julie.murphy@yahoo.com'], ['Kwai','Lee','kwai.lee@google.com'], ['Jean','King','jean.king@me.com'], ['Susan','Nelson','susan.nelson@comcast.net'], ['Roland','Keitel','roland.keitel@yahoo.com'];

    Code language: SQL [Structured Query Language] [sql]
    8 trong mệnh đề

    INSERT INTO contacts [first_name,last_name,email] VALUES ['Carine ','Schmitt','carine.schmitt@verizon.net'], ['Jean','King','jean.king@me.com'], ['Peter','Ferguson','peter.ferguson@google.com'], ['Janine ','Labrune','janine.labrune@aol.com'], ['Jonas ','Bergulfsen','jonas.bergulfsen@mac.com'], ['Janine ','Labrune','janine.labrune@aol.com'], ['Susan','Nelson','susan.nelson@comcast.net'], ['Zbyszek ','Piestrzeniewicz','zbyszek.piestrzeniewicz@att.net'], ['Roland','Keitel','roland.keitel@yahoo.com'], ['Julie','Murphy','julie.murphy@yahoo.com'], ['Kwai','Lee','kwai.lee@google.com'], ['Jean','King','jean.king@me.com'], ['Susan','Nelson','susan.nelson@comcast.net'], ['Roland','Keitel','roland.keitel@yahoo.com'];

    Code language: SQL [Structured Query Language] [sql]
    9 để kiểm tra xem có nhóm nào có nhiều hơn 1 phần tử không. Các nhóm này trùng lặp

Truy vấn sau đây minh họa ý tưởng

SELECT col, COUNT[col] FROM table_name GROUP BY col HAVING COUNT[col] > 1;

Code language: SQL [Structured Query Language] [sql]

Bằng cách sử dụng mẫu truy vấn này, bạn có thể tìm các hàng có email trùng lặp trong bảng contacts như sau

SELECT email, COUNT[email] FROM contacts GROUP BY email HAVING COUNT[email] > 1;

Code language: SQL [Structured Query Language] [sql]

Ảnh này hiển thị đầu ra của truy vấn hiển thị các email trùng lặp

Tìm các giá trị trùng lặp trong nhiều cột

Đôi khi, bạn muốn tìm các hàng trùng lặp dựa trên nhiều cột thay vì một. Trong trường hợp này, bạn có thể sử dụng truy vấn sau

SELECT col1, COUNT[col1], col2, COUNT[col2], ... FROM table_name GROUP BY col1, col2, ... HAVING [COUNT[col1] > 1] AND [COUNT[col2] > 1] AND ...

Code language: SQL [Structured Query Language] [sql]

Các hàng chỉ được coi là trùng lặp khi tổ hợp các cột trùng lặp, do đó chúng tôi đã sử dụng toán tử

SELECT * FROM contacts ORDER BY email;

Code language: SQL [Structured Query Language] [sql]
1 trong mệnh đề

INSERT INTO contacts [first_name,last_name,email] VALUES ['Carine ','Schmitt','carine.schmitt@verizon.net'], ['Jean','King','jean.king@me.com'], ['Peter','Ferguson','peter.ferguson@google.com'], ['Janine ','Labrune','janine.labrune@aol.com'], ['Jonas ','Bergulfsen','jonas.bergulfsen@mac.com'], ['Janine ','Labrune','janine.labrune@aol.com'], ['Susan','Nelson','susan.nelson@comcast.net'], ['Zbyszek ','Piestrzeniewicz','zbyszek.piestrzeniewicz@att.net'], ['Roland','Keitel','roland.keitel@yahoo.com'], ['Julie','Murphy','julie.murphy@yahoo.com'], ['Kwai','Lee','kwai.lee@google.com'], ['Jean','King','jean.king@me.com'], ['Susan','Nelson','susan.nelson@comcast.net'], ['Roland','Keitel','roland.keitel@yahoo.com'];

Code language: SQL [Structured Query Language] [sql]
9

Ví dụ: để tìm các hàng trong bảng contacts có các giá trị trùng lặp trong cột first_name,

INSERT INTO contacts [first_name,last_name,email] VALUES ['Carine ','Schmitt','carine.schmitt@verizon.net'], ['Jean','King','jean.king@me.com'], ['Peter','Ferguson','peter.ferguson@google.com'], ['Janine ','Labrune','janine.labrune@aol.com'], ['Jonas ','Bergulfsen','jonas.bergulfsen@mac.com'], ['Janine ','Labrune','janine.labrune@aol.com'], ['Susan','Nelson','susan.nelson@comcast.net'], ['Zbyszek ','Piestrzeniewicz','zbyszek.piestrzeniewicz@att.net'], ['Roland','Keitel','roland.keitel@yahoo.com'], ['Julie','Murphy','julie.murphy@yahoo.com'], ['Kwai','Lee','kwai.lee@google.com'], ['Jean','King','jean.king@me.com'], ['Susan','Nelson','susan.nelson@comcast.net'], ['Roland','Keitel','roland.keitel@yahoo.com'];

Code language: SQL [Structured Query Language] [sql]
0 và

INSERT INTO contacts [first_name,last_name,email] VALUES ['Carine ','Schmitt','carine.schmitt@verizon.net'], ['Jean','King','jean.king@me.com'], ['Peter','Ferguson','peter.ferguson@google.com'], ['Janine ','Labrune','janine.labrune@aol.com'], ['Jonas ','Bergulfsen','jonas.bergulfsen@mac.com'], ['Janine ','Labrune','janine.labrune@aol.com'], ['Susan','Nelson','susan.nelson@comcast.net'], ['Zbyszek ','Piestrzeniewicz','zbyszek.piestrzeniewicz@att.net'], ['Roland','Keitel','roland.keitel@yahoo.com'], ['Julie','Murphy','julie.murphy@yahoo.com'], ['Kwai','Lee','kwai.lee@google.com'], ['Jean','King','jean.king@me.com'], ['Susan','Nelson','susan.nelson@comcast.net'], ['Roland','Keitel','roland.keitel@yahoo.com'];

Code language: SQL [Structured Query Language] [sql]
1, bạn sử dụng truy vấn sau

SELECT first_name, COUNT[first_name], last_name, COUNT[last_name], email, COUNT[email] FROM contacts GROUP BY first_name , last_name , email HAVING COUNT[first_name] > 1 AND COUNT[last_name] > 1 AND COUNT[email] > 1;

Code language: SQL [Structured Query Language] [sql]

Sau đây minh họa đầu ra của truy vấn

Trong hướng dẫn này, bạn đã học cách tìm các hàng trùng lặp dựa trên giá trị của một hoặc nhiều cột trong MySQL

Làm cách nào để tìm tên trùng lặp trong SQL?

Để tìm các Tên trùng lặp trong bảng, chúng ta phải làm theo các bước sau. .
Xác định tiêu chí. Lúc đầu, bạn cần xác định các tiêu chí để tìm Tên trùng lặp. Bạn có thể muốn tìm kiếm trong một cột hoặc nhiều hơn thế
Viết truy vấn. Sau đó, chỉ cần viết truy vấn để tìm các Tên trùng lặp

Làm cách nào để tìm các bản ghi trùng lặp trong SQL mà không cần NHÓM THEO?

1. Sử dụng Từ khóa riêng biệt để loại bỏ các giá trị trùng lặp và đếm số lần xuất hiện của chúng khỏi kết quả Truy vấn . Chúng ta có thể sử dụng từ khóa Distinct để lấy các bản ghi duy nhất từ ​​cơ sở dữ liệu của mình. Bằng cách này, chúng tôi có thể xem các kết quả duy nhất từ ​​​​cơ sở dữ liệu của mình.

Chủ Đề