MySQL WHERE ข้อ: และ, หรือ, ใน, ไม่อยู่ในตัวอย่างแบบสอบถาม
อะไรคือ WHERE ข้อใน MySQL?
ข้อที่ in MySQL เป็นคำสำคัญที่ใช้เพื่อระบุเกณฑ์ที่แน่นอนของข้อมูลหรือแถวที่จะได้รับผลกระทบจากคำสั่ง SQL ที่ระบุ สามารถใช้คำสั่ง WHERE ร่วมกับคำสั่ง SQL เช่น INSERT, UPDATE, SELECT และ DELETE เพื่อกรองระเบียนและดำเนินการต่างๆ กับข้อมูล
เราดูวิธีการสืบค้นข้อมูลจาก ฐานข้อมูล โดยใช้คำสั่ง SELECT ในบทช่วยสอนก่อนหน้านี้ คำสั่ง SELECT ส่งคืนผลลัพธ์ทั้งหมดจากตารางฐานข้อมูลที่สอบถาม
อย่างไรก็ตาม เป็นเวลาที่เราต้องการจำกัดผลลัพธ์การสืบค้นให้อยู่ในเงื่อนไขที่ระบุ ส่วนคำสั่ง WHERE ใน SQL มีประโยชน์ในสถานการณ์เช่นนี้

WHERE ไวยากรณ์ส่วนคำสั่ง
ไวยากรณ์พื้นฐานสำหรับส่วนคำสั่ง WHERE เมื่อใช้ใน MySQL คำสั่ง SELECT WHERE มีดังนี้
SELECT * FROM tableName WHERE condition;
ที่นี่
- “เลือก * จากชื่อตาราง” เป็นมาตรฐาน คำสั่ง SELECT
- "ที่ไหน" เป็นคำหลักที่จำกัดชุดผลลัพธ์แบบสอบถามแบบเลือกของเราและ "เงื่อนไข" เป็นตัวกรองที่จะใช้กับผลลัพธ์ ตัวกรองอาจเป็นช่วง ค่าเดียว หรือแบบสอบถามย่อย
ตอนนี้เรามาดูก ตัวอย่างการใช้งานจริง.
สมมติว่าเราต้องการรับรายละเอียดส่วนบุคคลของสมาชิกจากตารางสมาชิกโดยกำหนดหมายเลขสมาชิกเป็น 1 เราจะใช้สคริปต์ต่อไปนี้เพื่อให้บรรลุสิ่งนั้น
SELECT * FROM `members` WHERE `membership_number` = 1;
ดำเนินการสคริปต์ข้างต้นใน MySQL ปรับแต่ง ใน “myflixdb” จะแสดงผลลัพธ์ต่อไปนี้
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
WHERE ข้อรวมกับ – AND ตรรกะ OperaTor
สภาพ WHERE ใน MySQL เมื่อใช้ร่วมกับตัวดำเนินการตรรกะ AND จะถูกดำเนินการเฉพาะในกรณีที่ตรงตามเกณฑ์ตัวกรองทั้งหมดที่ระบุเท่านั้น
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
WHERE ข้อรวมกับ – OR ตรรกะ OperaTor
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
WHERE ข้อรวมกับ – IN คำหลัก
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
ดำเนินการสคริปต์ข้างต้นใน MySQL การใช้งาน workbench กับ “myflixdb” จะให้ผลลัพธ์ดังต่อไปนี้
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
WHERE ข้อรวมกับ – ไม่อยู่ใน คำหลัก
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
ดำเนินการสคริปต์ข้างต้นใน MySQL การใช้งาน workbench กับ “myflixdb” จะให้ผลลัพธ์ดังต่อไปนี้
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
WHERE ข้อรวมกับ – เปรียบเทียบ Operaโปร
= เท่ากับ
SELECT * FROM `members` WHERE `gender` = 'Female';
ดำเนินการสคริปต์ข้างต้นใน MySQL การใช้งาน workbench กับ “myflixdb” จะให้ผลลัพธ์ดังต่อไปนี้
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
> มากกว่า
payment_id | membership_number | payment_date | description | amount_paid | external_reference_number |
---|---|---|---|---|---|
1 | 1 | 23-07-2012 | Movie rental payment | 2500 | 11 |
3 | 3 | 30-07-2012 | Movie rental payment | 6000 | NULL |
< > ไม่เท่ากับ
SELECT * FROM `movies` WHERE `category_id`<> 1;
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
5 | Daddy's Little Girls | NULL | 2007 | 8 |
6 | Angels and Demons | NULL | 2007 | 6 |
7 | Davinci Code | NULL | 2007 | 6 |
9 | Honey mooners | John Schultz | 2005 | 8 |
สรุป
- ส่วนคำสั่ง SQL WHERE ใช้เพื่อจำกัดจำนวนแถวที่ได้รับผลกระทบจาก SELECT, UPDATE หรือ ลบแบบสอบถาม.
- เงื่อนไข WHERE ใน SQL สามารถใช้ร่วมกับตัวดำเนินการเชิงตรรกะ เช่น AND และ OR ตัวดำเนินการเปรียบเทียบ เช่น ,= เป็นต้น
- เมื่อใช้ร่วมกับ AND ตัวดำเนินการตรรกะจะต้องเป็นไปตามเกณฑ์ทั้งหมด
- เมื่อใช้ร่วมกับตัวดำเนินการเชิงตรรกะ OR จะต้องเป็นไปตามเกณฑ์ใดเกณฑ์หนึ่ง
- คำสำคัญ IN ใช้เพื่อเลือกแถวที่ตรงกับรายการค่า
ช่วยพัฒนาสมอง
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;
ดำเนินการสคริปต์ข้างต้นใน MySQL Workbench ให้ผลลัพธ์ต่อไปนี้
reference_number | transaction_date | return_date | membership_number | movie_id | movie_returned |
---|---|---|---|---|---|
14 | 21-06-2012 | 24-06-2012 | 2 | 2 | 0 |