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

MYSQL:คุณดึงผลลัพธ์ที่ตรงกับ 3 ใน 4 นิพจน์ได้ไหม


คุณสามารถใช้คำสั่ง CASE เพื่อให้ได้ผลลัพธ์ที่ตรงกับนิพจน์บางอย่างได้−

SELECT *FROM yourTableNameWHERE CASE WHEN yourColumnName1 =yourValue1 THEN 1 ELSE 0 END + CASE WHEN yourColumnName2 =yourValue2 แล้ว 1 ELSE 0 END + CASE WHEN yourColumnName3 =yourValue3 แล้ว 1 ELSE 0 END + .CASE เมื่อ yourColumnNameN =yourValueN แล้ว 1 ELSE 0 END> =3;

เพื่อให้เข้าใจไวยากรณ์ข้างต้น ให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้ −

mysql> สร้างตาราง UserInformation -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT, -> FirstName varchar(20), -> LastName varchar(20), -> Age int, -> Marks int, -> PRIMARY KEY( Id) -> );แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.58 วินาที)

แทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามมีดังนี้ −

mysql> แทรกลงใน UserInformation (FirstName,LastName,Age,Marks) values('John','Smith',22,89);Query OK, 1 แถวที่ได้รับผลกระทบ (0.12 วินาที)mysql> แทรกลงใน UserInformation(FirstName, LastName,Age,Marks) values('Carol','Taylor',21,80);Query OK, 1 แถวได้รับผลกระทบ (0.19 วินาที)mysql> แทรกลงใน UserInformation (FirstName,LastName,Age,Marks) ค่า ('John' ,'Doe',24,81);Query OK, 1 แถวได้รับผลกระทบ (0.14 วินาที)mysql> แทรกลงใน UserInformation (FirstName,LastName,Age,Marks) values('David','Miller',29,99);Query ตกลง ได้รับผลกระทบ 1 แถว (0.15 วินาที)mysql> แทรกลงใน UserInformation (FirstName,LastName,Age,Marks)values('Mitchell','Johnson',22,65);Query OK, 1 แถวได้รับผลกระทบ (0.13 วินาที) 

แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้ −

mysql> เลือก *จาก UserInformation;

ต่อไปนี้เป็นผลลัพธ์

<ก่อนหน้า>+----+-----------+----------+------+-------+| รหัส | ชื่อจริง | นามสกุล | อายุ | เครื่องหมาย |+----+-----------+----------+------+-------+| 1 | จอห์น | สมิ ธ | 22 | 89 || 2 | แครอล | เทย์เลอร์ | 21 | 80 || 3 | จอห์น | โด | 24 | 81 || 4 | เดวิด | มิลเลอร์ | 29 | 99 || 5 | มิทเชลล์ | จอห์นสัน | 22 | 65 |+----+-----------+----------+------+-------+5 แถวในชุด (0.00 วินาที)

นี่คือแบบสอบถามเพื่อดึงระเบียนที่ตรงกับนิพจน์บางส่วน (ไม่ใช่ทั้งหมด) แบบสอบถามมีดังนี้−

mysql> เลือก * จาก UserInformation -> โดยที่ case เมื่อ FirstName ='Mitchell' แล้ว 1 อื่น 0 end + -> case เมื่อ LastName ='Johnson' แล้ว 1 อื่น 0 end + -> case เมื่ออายุ =22 แล้ว 1 อื่น 0 end + -> case เมื่อ Marks =67 แล้ว 1 else 0 end> =3;

ต่อไปนี้เป็นผลลัพธ์−

<ก่อนหน้า>+----+-----------+----------+------+-------+| รหัส | ชื่อจริง | นามสกุล | อายุ | เครื่องหมาย |+----+-----------+----------+------+-------+| 5 | มิทเชลล์ | จอห์นสัน | 22 | 65 |+----+-----------+----------+------+-------+1 แถวในชุด (0.00 วินาที)