แนะนำ, 2024

ตัวเลือกของบรรณาธิการ

ความแตกต่างระหว่างตำแหน่งกับประโยคใน SQL

คำสั่ง WHERE และ HAVING ส่วนใหญ่จะใช้ในคำสั่ง SQL แบบสอบถามซึ่งช่วยให้เราสามารถ จำกัด การรวมกันในความสัมพันธ์ของผลลัพธ์ผ่านการใช้คำกริยาเฉพาะ ข้อแตกต่างที่สำคัญระหว่าง WHERE และ HAVING คือ WHERE clause ระบุเงื่อนไขสำหรับการเลือกสิ่ง อันดับ (แถว) จากความสัมพันธ์รวมถึงเงื่อนไขการเข้าร่วมหากจำเป็น ในทางกลับกันคำสั่ง HAVING ระบุเงื่อนไขใน กลุ่มที่ ถูกเลือกมากกว่าบนสิ่งอันดับเดี่ยว

SQL ย่อมาจาก ภาษาของแบบสอบถามที่มีโครงสร้าง ; มันเป็นภาษาฐานข้อมูลที่ครอบคลุมหรือประกาศที่ใช้สำหรับการเข้าถึงข้อมูลจากฐานข้อมูล

แผนภูมิเปรียบเทียบ

พื้นฐานสำหรับการเปรียบเทียบWHEREการมี
ขั้นพื้นฐานนำมาใช้ในการดำเนินงานแถวนำมาใช้ในการดำเนินงานคอลัมน์
นำไปใช้กับแถวเดียวแถวหรือกลุ่มสรุป
การดึงข้อมูลมันดึงข้อมูลเฉพาะจากแถวที่เฉพาะเจาะจงตามเงื่อนไขในตอนแรกข้อมูลที่สมบูรณ์ถูกดึงออกมาแล้วแยกออกตามเงื่อนไข
ฟังก์ชั่นรวมไม่สามารถปรากฏในส่วนคำสั่ง WHEREสามารถปรากฏในข้อ HAVING
ใช้กับSELECT และข้อความอื่น ๆ เช่น UPDATE, DELETE หรือข้อความใดข้อความหนึ่งไม่สามารถใช้โดยไม่มีคำสั่ง SELECT
ทำหน้าที่เป็นกรองก่อนโพสต์กรอง
จัดกลุ่มตามมาหลังจากไหนมาหลังจากที่มี

คำจำกัดความของ Where Clause

ส่วน คำสั่ง SQL WHERE จะใช้เพื่ออธิบายเงื่อนไขในเวลาที่ดึงข้อมูลจากตารางเดียวหรือโดยการเข้าร่วมกับหลายตาราง มันจะส่งกลับเฉพาะค่าจากตารางหากเงื่อนไขที่กำหนดเป็นจริง WHERE clause ถูกใช้เพื่อแทรกซึมเร็กคอร์ดและดึงเฉพาะเร็กคอร์ดที่จำเป็นเท่านั้น

SQL ยังใช้การเชื่อมต่อแบบลอจิคัล และ หรือ ไม่ อยู่ในส่วนคำสั่ง WHERE ซึ่งเป็นที่รู้จักกันว่าเป็นเงื่อนไข บูลีน เงื่อนไขจะต้องเป็นจริงเพื่อดึงสิ่งอันดับ ตัวถูกดำเนินการของนิพจน์เชื่อมต่อแบบลอจิคัลเกี่ยวข้องกับตัวดำเนินการเปรียบเทียบเช่น <, <=, >, > =, = และ . ตัวดำเนินการเปรียบเทียบเหล่านี้เปรียบเทียบสตริงและนิพจน์ทางคณิตศาสตร์ มันสามารถใช้ในคำสั่ง SELECT เช่นเดียวกับในคำสั่ง UPDATE, DELETE

ลองยกตัวอย่าง ตารางที่แสดงด้านล่างชื่อเป็นตาราง ' ขาย ' ประกอบด้วยแอตทริบิวต์ ' ผลิตภัณฑ์ ' และ ' Sales_amount '

แบบสอบถามต่อไปนี้จะถูกเขียนขึ้นเพื่อคำนวณผล รวม ของโทรศัพท์และลำโพง

 เลือกผลิตภัณฑ์ผลรวม (Sales_amount) เป็นผลรวมจากการขาย WHERE ผลิตภัณฑ์ในกลุ่ม ('โทรศัพท์', 'ลำโพง') ตามผลิตภัณฑ์; 

เอาต์พุตต่อไปนี้คือผลลัพธ์ที่เกิดขึ้นซึ่งมีการกรองแถวก่อนแถวของโทรศัพท์และลำโพงจะถูกดึงออกมาจากนั้นจะรวมฟังก์ชั่นการรวม

ความหมายของการมีข้อ

SQL มีข้อ HAVING ซึ่งสามารถใช้ร่วมกับ GROUP BY clause ได้ ส่วนคำสั่ง HAVING นี้ช่วยในการดึงค่าสำหรับกลุ่มที่ปฏิบัติตามเงื่อนไขบางประการ WHERE clause สามารถใช้ร่วมกับ HAVING clause ระหว่างการเลือก WHERE clause จะกรองแต่ละแถว จากนั้นแถวจะถูกจัดกลุ่มและทำการคำนวณรวมในที่สุด HAVING clause จะกรองกลุ่ม

มันจะทำงานเหมือนกับ WHERE เมื่อไม่ได้ใช้คำหลัก GROUP BY ฟังก์ชั่นกลุ่มเช่น min, max, avg, sum และ count สามารถปรากฏได้ในสองข้อเท่านั้น: SELECT และ HAVING clause มันมีเงื่อนไขในสิ่งอันดับที่สอดคล้องกับแต่ละค่าในกลุ่มของคุณลักษณะ ชุดระเบียนเฉพาะที่ตรงตามเงื่อนไขจะแสดงเป็นผลลัพธ์

ที่นี่เรากำลังยกตัวอย่างเช่นเดียวกับคำสั่ง WHERE และพิจารณาตาราง ' ขาย ' เดียวกัน เมื่อเราต้องการคำนวณ Total_sales ของโทรศัพท์และลำโพงโดยใช้ HAVING clause เราจะเขียนแบบสอบถามต่อไปนี้

 เลือกผลิตภัณฑ์ผลรวม (Sales_amount) ตามยอดรวมจากกลุ่มการขายแยกตามผลิตภัณฑ์ที่มีผลิตภัณฑ์ใน ('โทรศัพท์', 'ลำโพง'); 

เคียวรีสร้างเอาต์พุตต่อไปนี้ซึ่งผลิตภัณฑ์ถูกเรียกก่อนจากนั้นจึงรวมฟังก์ชัน (ผลรวม) และที่กลุ่มสุดท้ายจะถูกกรองซึ่งแตกต่างจาก WHERE clause

เมื่อเราต้องการค้นหาเฉพาะผลิตภัณฑ์ที่มี Total_sales มากกว่า 1, 000 แบบสอบถามสามารถเขียนเป็น:

 เลือกผลิตภัณฑ์ผลรวม (Sales_amount) ตามยอดรวมจากกลุ่มการขายแยกตามผลิตภัณฑ์ที่มีผลรวม (ยอดขาย _ จำนวน)> 1, 000; 

ผลผลิตที่ได้คือ:

สิ่งนี้ไม่สามารถทำได้โดยใช้คำสั่ง WHERE ทั้งๆที่มี HAVING และสร้างข้อความแสดงข้อผิดพลาดเพราะ WHERE clause ไม่สามารถใช้กับฟังก์ชันรวมได้

ความแตกต่างที่สำคัญระหว่างที่และกับข้อ

  1. WHERE clause ถูกใช้ในการดำเนินการแถวและใช้กับแถวเดียวขณะที่ HAVING clause ถูกใช้ในการดำเนินการของคอลัมน์และสามารถนำไปใช้กับแถวหรือกลุ่มที่สรุปได้
  2. ในส่วนคำสั่ง WHERE ข้อมูลที่ต้องการจะถูกดึงมาตามเงื่อนไขที่ใช้ ในทางตรงกันข้ามประโยคที่มีการดึงข้อมูลทั้งหมดแล้วการแยกจะทำตามเงื่อนไข
  3. ฟังก์ชันการรวมเช่น min, sum, max, avg ไม่สามารถปรากฏพร้อมกับ WHERE clause ได้ เมื่อเทียบกับฟังก์ชั่นเหล่านี้สามารถปรากฏในข้อ HAVING
  4. ส่วนคำสั่ง HAVING ไม่สามารถใช้ได้หากไม่มีคำสั่ง SELECT ในทางกลับกัน WHERE สามารถใช้กับ SELECT, UPDATE, DELETE และอื่น ๆ ได้
  5. WHERE clause จะทำหน้าที่เป็นตัวกรองล่วงหน้าในขณะที่ HAVING clause ทำหน้าที่เป็นตัวกรองหลัง
  6. WHERE clause เมื่อใช้กับ GROUP BY มาก่อน GROUP BY นี่หมายความว่าแถวตัวกรอง WHERE ก่อนทำการคำนวณแบบรวมจะดำเนินการ ในทางกลับกัน HAVING มาหลังจาก GROUP BY ซึ่งหมายความว่ามันจะกรองหลังจากทำการคำนวณแบบรวม

ข้อสรุป

WHERE และ HAVING clause ทำงานในลักษณะเดียวกันยกเว้นคุณลักษณะเพิ่มเติมที่ HAVING clause ได้รับความนิยม ส่วนคำสั่ง HAVING สามารถทำงานกับฟังก์ชันรวมได้อย่างมีประสิทธิภาพในขณะที่ WHERE ไม่สามารถใช้งานฟังก์ชันรวมได้

Top