การกำหนดเงื่อนไขในการ Select โดยใช้ WHERE : MySQL
 

Blog :: MySQL :: การกำหนดเงื่อนไขในการ Select โดยใช้ WHERE

ถ้าเราไม่กำหนดเงื่อนไขในการ select ข้อมูลจากตาราง (table) ดังนั้นคำสั่ง SELECT จะทำการดึงข้อมูลทุก ๆ เรคอร์ด ในตารางนั้น ๆ ออกมา ซึ่งข้อมูลที่ได้มานั้นอาจจะไม่ตรงตามที่เราต้องการ ดังนั้นเราจึงสามารถกำหนดเงื่อนไขในการ select ข้อมูลนั้น ๆ ได้โดยใช้คำสั่ง [storng]WHERE เพื่อให้ได้ข้อมูลตามที่เราต้องการที่แท้จริง

คำสั่ง WHERE นั้นสามารถกำหนดเงื่อนไขในการค้นหาได้ทั้งแบบง่ายและแบบซับซ้อนได้ตามจุดประสงค์ที่เราต้องการ เช่น ถ้าเราต้องการดึงข้อมูลจากตาราง person ที่มีค่า id น้อยกว่า 100 เราจะต้องระบุเงื่อนไขในการ SELECT ดังนี้
SELECT * FROM person WHERE id < 100;
แต่ถ้าเราต้องการกำหนดหลายเงื่อนไข เราจะต้องใช้ตัวดำเนินการ logical เช่น AND และ OR ในการเชื่อมเงื่อนไข เช่น ถ้าเราต้องการดึงข้อมูลจากตาราง person ที่มีค่า id มากกว่าหรือเท่ากับ 10 และจะต้องน้อยกว่าหรือเท่ากับ 20 จะต้องใช้คำสั่งดังนี้
SELECT * FROM person WHERE id >= 10 AND id <= 20;
เราสามารถตรวจสอบค่าตามช่วงที่กำหนดได้โดยการใช้ตัวดำเนินการ BETWEEN เช่น ถ้าต้องการดึงข้อมูลจากตาราง person ที่มีค่า id อยู่ระหว่าง 10 - 20 จะต้องกำหนดคำสั่งดังนี้
SELECT * FROM person WHERE id BETWEEN 10 AND 20;
บางตัวดำเนินการจะมีลำดับความสำคัญสูงกว่าตัวอื่น เช่น AND มีลำดัความสำคัญสูงกว่า OR เพื่อเราจะได้เรียงลำดับการตรวจสอบเงื่อนไขได้ถูกต้อง หรือเราอาจจะใช้วงเล็บในการจัดกลุ่มเงื่อนไขต่าง ๆ แทนได้ เช่น ถ้าเราต้องการดึงข้อมูลจากตาราง person ที่มีค่า id น้อยกว่า 3 และมี name เป็น 'Genetic' หรือ 'Admin' เราสามารถกำหนดคำสั่งได้ดังนี้
# ในกรณีที่เรียงลำดับความสำคัญของตัวดำเนินการ
SELECT * FROM person WHERE id < 3 AND name = 'Genetic' OR name = 'Admin';

# คำสั่งด้านบนจะได้ผลลัพธ์เหมือนกับคำสั่งนี้
SELECT * FROM person WHERE (id < 3 AND name = 'Genetic') OR name = 'Admin';
เนื่องจากว่า AND มีลำดับความสำคัญมากกว่า OR มันจึงตรวจสอบเงื่อนไข id < 3 AND name = 'Genetic' ก่อนแล้วจึงไปตรวจสอบในส่วน OR name = 'Admin' ทีหลัง

จากคำสั่งด้านบนนี้เป็นการตรวจสอบเงื่อนไขตามนี้
  • id น้อยกว่า 3 และจะต้องมี name = 'Genetic' ด้วย
  • หรืออาจจะมี name = 'Admin' อย่างเดียว
ถ้าเราต้องการให้มันตรวจสอบค่า name = 'Genetic' หรือ 'Admin' และ id จะต้องน้อยกว่า 3 จะต้องใช้คำสั่งดังนี้
SELECT * FROM person WHERE id < 3 AND (name = 'Genetic' OR name = 'Admin');
ผลลัพธ์จะแตกต่างจากคำสั่งที่แล้วครับ เนื่องจากเราจัดกลุ่มในการตรวจสอบเงื่อนไขใน field name

1 Comment

  • Kaijeay >//<
    #1 Comment By Kaijeay >//< เมื่อ 29 มิถุนายน 2013 เวลา 9 นาฬิกา 37 นาที
    ต่อยอดจากตัวอย่าง ถ้าต้องการกำหนด เงื่อนไขเป็น ตัวแปรล่ะคะ 
                    เนื่องจากว่าต้องการใช้ If ในการเลือก Type ก่อน แต่ละ type ก็จะต่างเงื่อนไขกัน คือ ใช้ If  @type เพื่อ Set ค่าให้ @Condition จากนั้น เอาไปต่อที่ Where หรือว่าเอาไปแทนค่า เช่น where name = @Condition แบบนี้ สามารถทำได้ไหมคะ
     

Comment Blog

 
 
 
Share This Topic Login with Facebook