MySQL - WHERE Clause
เราได้เห็น SQL SELECTคำสั่งเพื่อดึงข้อมูลจากตาราง MySQL เราสามารถใช้ประโยคเงื่อนไขที่เรียกว่าWHERE Clauseเพื่อกรองผลลัพธ์ออก การใช้คำสั่ง WHERE นี้เราสามารถระบุเกณฑ์การเลือกเพื่อเลือกระเบียนที่ต้องการจากตาราง
ไวยากรณ์
บล็อกรหัสต่อไปนี้มีไวยากรณ์ SQL ทั่วไปของคำสั่ง SELECT พร้อมด้วยคำสั่ง WHERE เพื่อดึงข้อมูลจากตาราง MySQL -
SELECT field1, field2,...fieldN table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....
คุณสามารถใช้ตารางอย่างน้อยหนึ่งตารางที่คั่นด้วยเครื่องหมายจุลภาคเพื่อรวมเงื่อนไขต่างๆโดยใช้คำสั่ง WHERE แต่คำสั่ง WHERE เป็นส่วนเสริมของคำสั่ง SELECT
คุณสามารถระบุเงื่อนไขใด ๆ โดยใช้คำสั่ง WHERE
คุณสามารถระบุเงื่อนไขได้มากกว่าหนึ่งเงื่อนไขโดยใช้ AND หรือ OR ผู้ประกอบการ
คำสั่ง WHERE สามารถใช้ร่วมกับคำสั่ง DELETE หรือ UPDATE SQL เพื่อระบุเงื่อนไขได้
WHERE อนุประโยคทำงานเหมือนไฟล์ if conditionในภาษาโปรแกรมใด ๆ ประโยคนี้ใช้เพื่อเปรียบเทียบค่าที่กำหนดกับค่าฟิลด์ที่มีอยู่ในตาราง MySQL หากค่าที่กำหนดจากภายนอกเท่ากับค่าฟิลด์ที่มีอยู่ในตาราง MySQL ค่านั้นจะส่งกลับแถวนั้น
นี่คือรายการตัวดำเนินการซึ่งสามารถใช้กับไฟล์ WHERE อนุประโยค
สมมติว่าฟิลด์ A ถือ 10 และฟิลด์ B ถือ 20 จากนั้น -
ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
= | ตรวจสอบว่าค่าของตัวถูกดำเนินการทั้งสองเท่ากันหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง | (A = B) ไม่เป็นความจริง |
! = | ตรวจสอบว่าค่าของตัวถูกดำเนินการทั้งสองเท่ากันหรือไม่หากค่าไม่เท่ากันเงื่อนไขจะกลายเป็นจริง | (A! = B) เป็นจริง |
> | ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายมากกว่าค่าของตัวถูกดำเนินการด้านขวาหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง | (A> B) ไม่เป็นความจริง |
< | ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายน้อยกว่าค่าของตัวถูกดำเนินการด้านขวาหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง | (A <B) เป็นจริง |
> = | ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายมากกว่าหรือเท่ากับค่าของตัวถูกดำเนินการด้านขวาหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง | (A> = B) ไม่เป็นความจริง |
<= | ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายน้อยกว่าหรือเท่ากับค่าของตัวถูกดำเนินการด้านขวาหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง | (A <= B) เป็นจริง |
WHERE clause มีประโยชน์มากเมื่อคุณต้องการดึงข้อมูลแถวที่เลือกจากตารางโดยเฉพาะเมื่อคุณใช้ MySQL Join. การเข้าร่วมจะถูกกล่าวถึงในบทอื่น
เป็นเรื่องปกติในการค้นหาเรกคอร์ดโดยใช้ไฟล์ Primary Key เพื่อให้การค้นหาเร็วขึ้น
หากเงื่อนไขที่กำหนดไม่ตรงกับเรกคอร์ดใด ๆ ในตารางแบบสอบถามจะไม่ส่งคืนแถวใด ๆ
ดึงข้อมูลจากพรอมต์คำสั่ง
สิ่งนี้จะใช้คำสั่ง SQL SELECT กับส่วนคำสั่ง WHERE เพื่อดึงข้อมูลที่เลือกจากตาราง MySQL - tutorials_tbl.
ตัวอย่าง
ตัวอย่างต่อไปนี้จะส่งคืนระเบียนทั้งหมดจากไฟล์ tutorials_tbl ตารางที่ชื่อผู้แต่งคือ Sanjay.
root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from tutorials_tbl WHERE tutorial_author = 'Sanjay';
+-------------+----------------+-----------------+-----------------+
| tutorial_id | tutorial_title | tutorial_author | submission_date |
+-------------+----------------+-----------------+-----------------+
| 3 | JAVA Tutorial | Sanjay | 2007-05-21 |
+-------------+----------------+-----------------+-----------------+
1 rows in set (0.01 sec)
mysql>
เว้นแต่จะดำเนินการก LIKEการเปรียบเทียบสตริงการเปรียบเทียบไม่คำนึงถึงขนาดตัวพิมพ์ คุณสามารถทำให้กรณีการค้นหาของคุณมีความละเอียดอ่อนโดยใช้ไฟล์BINARY คีย์เวิร์ดดังนี้ -
root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from tutorials_tbl \
WHERE BINARY tutorial_author = 'sanjay';
Empty set (0.02 sec)
mysql>
การดึงข้อมูลโดยใช้สคริปต์ PHP
คุณสามารถใช้คำสั่ง SQL SELECT เดียวกันกับ WHERE CLAUSE ในฟังก์ชัน PHP mysql_query(). ฟังก์ชันนี้ใช้เพื่อดำเนินการคำสั่ง SQL และฟังก์ชัน PHP อื่นในภายหลังmysql_fetch_array()สามารถใช้เพื่อดึงข้อมูลที่เลือกทั้งหมด ฟังก์ชันนี้ส่งคืนแถวเป็นอาร์เรย์เชื่อมโยงอาร์เรย์ตัวเลขหรือทั้งสองอย่าง ฟังก์ชันนี้จะส่งกลับค่า FALSE หากไม่มีแถวเพิ่มเติม
ตัวอย่าง
ตัวอย่างต่อไปนี้จะส่งคืนระเบียนทั้งหมดจากไฟล์ tutorials_tbl ตารางที่ชื่อผู้แต่งคือ Sanjay -
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT tutorial_id, tutorial_title,
tutorial_author, submission_date
FROM tutorials_tbl
WHERE tutorial_author = "Sanjay"';
mysql_select_db('TUTORIALS');
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
echo "Tutorial ID :{$row['tutorial_id']} <br> ".
"Title: {$row['tutorial_title']} <br> ".
"Author: {$row['tutorial_author']} <br> ".
"Submission Date : {$row['submission_date']} <br> ".
"--------------------------------<br>";
}
echo "Fetched data successfully\n";
mysql_close($conn);
?>