ภาพรวม
ใช้ DISTINCT ร่วมกับ COUNT(), GROUP BY และ HAVING เพื่อกรองเฉพาะค่าที่ปรากฏซ้ำตามเงื่อนไข
ไวยากรณ์
SELECT DISTINCT yourColumnName, COUNT(yourColumnName) FROM yourTableName WHERE yourColumnName LIKE 'J%' GROUP BY yourColumnName HAVING COUNT(*) > 1 ORDER BY yourColumnName;
ตัวอย่าง: สร้างตารางและข้อมูล
mysql> CREATE TABLE DemoTable1500 (
-> Name VARCHAR(20)
-> );
Query OK, 0 rows affected (0.86 sec)
เพิ่มข้อมูล
INSERT INTO DemoTable1500 VALUES('Adam');
INSERT INTO DemoTable1500 VALUES('John');
INSERT INTO DemoTable1500 VALUES('Mike');
INSERT INTO DemoTable1500 VALUES('John');
INSERT INTO DemoTable1500 VALUES('Jace');
INSERT INTO DemoTable1500 VALUES('Jace');
INSERT INTO DemoTable1500 VALUES('Jackie');
แสดงข้อมูลทั้งหมด
SELECT * FROM DemoTable1500;
ผลลัพธ์
+--------+ | Name | +--------+ | Adam | | John | | Mike | | John | | Jace | | Jace | | Jackie | +--------+ 7 rows in set (0.00 sec)
คำสั่งกรองชื่อขึ้นต้น J และปรากฏมากกว่า 1 ครั้ง
SELECT DISTINCT Name, COUNT(Name) FROM DemoTable1500 WHERE Name LIKE 'J%' GROUP BY Name HAVING COUNT(*) > 1 ORDER BY Name;
ผลลัพธ์
+------+-------------+ | Name | COUNT(Name) | +------+-------------+ | Jace | 2 | | John | 2 | +------+-------------+ 2 rows in set (0.00 sec)
สรุป
DISTINCTกับCOUNTใน SELECT แสดงค่าและจำนวนWHERE Name LIKE 'J%'กรองเฉพาะขึ้นต้น JGROUP BY Nameจัดกลุ่มตามชื่อHAVING COUNT(*) > 1กรองกลุ่มที่มีมากกว่า 1 รายการ