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

นับจำนวนรายการที่ซ้ำกันเฉพาะ Prefix ใน MySQL

การเตรียมข้อมูล

mysql> CREATE TABLE DemoTable1854 (Name VARCHAR(20));

mysql> INSERT INTO DemoTable1854 VALUES('John-Smith');
mysql> INSERT INTO DemoTable1854 VALUES('Chris-Brown');
mysql> INSERT INTO DemoTable1854 VALUES('Adam-Smith');
mysql> INSERT INTO DemoTable1854 VALUES('John-Doe');
mysql> INSERT INTO DemoTable1854 VALUES('John-Smith');  -- ซ้ำ

นับเฉพาะที่ขึ้นต้นด้วย 'John-'

mysql> SELECT Name, COUNT(Name) 
    FROM DemoTable1854 
    WHERE Name LIKE 'John-%' 
    GROUP BY Name;

ผลลัพธ์:

+------------+-------------+
| Name       | count(Name) |
+------------+-------------+
| John-Smith | 2           |
| John-Doe   | 1           |
+------------+-------------+

การทำงาน

  1. WHERE Name LIKE 'John-%' กรองเฉพาะที่ขึ้นต้นด้วย John-
  2. GROUP BY Name จับกลุ่มค่าเหมือนกัน
  3. COUNT(Name) นับจำนวนในแต่ละกลุ่ม

Pattern Matching ใน LIKE

ขยาย: นับรวมทุก Prefix

-- นับทุก Prefix (ส่วนก่อน -)
SELECT SUBSTRING_INDEX(Name, '-', 1) AS Prefix, COUNT(*)
FROM DemoTable1854
GROUP BY Prefix;
Patternความหมาย
John-%ขึ้นต้นด้วย John- (มีอะไรก็ได้ต่อท้าย)
%-Smithลงท้ายด้วย -Smith
%John%มี John อยู่ตรงไหนก็ได้
John_John + ตัวอักษร 1 ตัว (Underscore = 1 ตัว)