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

คิวรี่ MySQL ใช้ LIKE แทน IN() เพื่อนับข้อมูล

นับจำนวนเรคคอร์ดที่มีคำเฉพาะในสตริงด้วย LIKE และ COUNT/IF

สร้างตารางและเพิ่มข้อมูล

mysql> create table DemoTable ( Subject varchar(80) ); 
Query OK, 0 rows affected (0.58 sec)
mysql> insert into DemoTable values('MySQLMongoDB'); 
Query OK, 1 row affected (0.86 sec) 
mysql> insert into DemoTable values('MySQL'); 
Query OK, 1 row affected (0.12 sec) 
mysql> insert into DemoTable values('JavaMySQL'); 
Query OK, 1 row affected (0.18 sec) 
mysql> insert into DemoTable values('MongoDB'); 
Query OK, 1 row affected (0.20 sec) 
mysql> insert into DemoTable values('Java'); 
Query OK, 1 row affected (0.19 sec)

คิวรี่นับจำนวนที่มีคำ MySQL, Java, MongoDB

mysql> select 
    -> count(if(Subject like '%MySQL%',1,NULL)) as MySQLCount, 
    -> count(if(Subject like '%Java%',1,NULL)) as JavaCount, 
    -> count(if(Subject like '%MongoDB%',1,NULL)) as MongoDBCount 
    -> from DemoTable;

ผลลัพธ์

+------------+-----------+--------------+ 
| MySQLCount | JavaCount | MongoDBCount | 
+------------+-----------+--------------+ 
|          3 |         2 |            2 | 
+------------+-----------+--------------+ 
1 row in set (0.00 sec)

คำอธิบาย: IF(condition, 1, NULL) คืน 1 เมื่อเจอคำค้นหา NULL เมื่อไม่เจอ | COUNT() นับเฉพาะค่าที่ไม่ใช่ NULL | ใช้ได้เมื่อไม่สามารถใช้ IN() โดยตรงกับสตริงที่มีหลายคำ