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);
?>