Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

SELECT ค่าที่ไม่ซ้ำกัน (DISTINCT) ใน MySQL

ใช้คีย์เวิร์ด DISTINCT เพื่อเลือกค่าที่ไม่ซ้ำกันจากคอลัมน์

ไวยากรณ์

SELECT DISTINCT yourColumnName FROM yourTableName;

สร้างตารางตัวอย่าง

mysql> CREATE TABLE displayOnlyDistinctValue (
    -> UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> UserName VARCHAR(100),
    -> UserAge INT
    -> );

เพิ่มข้อมูลตัวอย่าง (มีค่าซ้ำ)

mysql> INSERT INTO displayOnlyDistinctValue(UserName, UserAge) VALUES
('Larry', 23), ('Mike', 23), ('Larry', 21), ('Sam', 23), ('Carol', 25),
('Sam', 26), ('Sam', 27), ('Bob', 22), ('Larry', 22);

แสดงข้อมูลทั้งหมด (9 แถว)

mysql> SELECT * FROM displayOnlyDistinctValue;

ผลลัพธ์:

+--------+----------+---------+
| UserId | UserName | UserAge |
+--------+----------+---------+
| 1      | Larry    | 23      |
| 2      | Mike     | 23      |
| 3      | Larry    | 21      |
| 4      | Sam      | 23      |
| 5      | Carol    | 25      |
| 6      | Sam      | 26      |
| 7      | Sam      | 27      |
| 8      | Bob      | 22      |
| 9      | Larry    | 22      |
+--------+----------+---------+

กรณีที่ 1: DISTINCT บน UserName

mysql> SELECT DISTINCT UserName FROM displayOnlyDistinctValue;

ผลลัพธ์ (5 ค่า):

+----------+
| UserName |
+----------+
| Larry    |
| Mike     |
| Sam      |
| Carol    |
| Bob      |
+----------+

กรณีที่ 2: DISTINCT บน UserAge

mysql> SELECT DISTINCT UserAge FROM displayOnlyDistinctValue;

ผลลัพธ์ (6 ค่า):

+---------+
| UserAge |
+---------+
| 23      |
| 21      |
| 25      |
| 26      |
| 27      |
| 22      |
+---------+

DISTINCT หลายคอลัมน์

SELECT DISTINCT UserName, UserAge FROM displayOnlyDistinctValue;

จะคืนค่าคู่ (UserName, UserAge) ที่ไม่ซ้ำกัน

นับค่าที่ไม่ซ้ำ

SELECT COUNT(DISTINCT UserName) FROM displayOnlyDistinctValue; -- 5
SELECT COUNT(DISTINCT UserAge) FROM displayOnlyDistinctValue;  -- 6

ข้อควรระวัง

  • DISTINCT ทำงานหลัง WHERE ก่อน ORDER BY
  • อาจช้าในตารางใหญ่ เนื่องจากต้องเรียงลำดับเพื่อหาค่าซ้ำ
  • ใช้ index บนคอลัมน์ที่ DISTINCT เพื่อเพิ่มประสิทธิภาพ