ทำความเข้าใจกับตัวดำเนินการ *=
ใน Sybase SQL
หากคุณดูแลหรือทำงานกับโค้ดเก่าบน Sybase SQL คุณอาจเคยพบกับตัวดำเนินการ *=
ในคำค้นหา ตัวดำเนินการนี้อาจเป็นแหล่งที่มาของความสับสนสำหรับหลายๆ คน โดยเฉพาะอย่างยิ่งเพราะมันไม่ได้มีเอกสารมากนักหรือถูกใช้กันทั่วไปในแนวทาง SQL สมัยใหม่ ในบล็อกโพสต์นี้ เราจะชี้แจงว่าตัวดำเนินการ *=
คืออะไร วัตถุประสงค์ของมัน และวิธีการที่มันแตกต่างจากตัวดำเนินการเท่ากันมาตรฐาน (=
) ใน SQL
ตัวดำเนินการ *=
คืออะไร?
ตัวดำเนินการ *=
ถูกใช้ใน Sybase SQL เพื่อดำเนินการเชื่อมต่อแบบนอก โดยเฉพาะ มันจะบ่งชี้ว่ามีการเชื่อมต่อแบบนอกทางซ้าย ซึ่งตารางหนึ่ง (ที่เรียกว่า outer table) จะคืนค่าทุกแถว ขณะที่แถวที่เกี่ยวข้องจากอีกตารางหนึ่ง (ที่เรียกว่า inner table) จะถูกจับคู่เมื่อเป็นไปได้
นี่คือตัวอย่างง่าย ๆ ของวิธีการใช้งาน:
SELECT * FROM a, b WHERE a.id *= b.id
นี่แตกต่างจาก =
อย่างไร?
คุณอาจสงสัยว่าการใช้ *=
เปลี่ยนพฤติกรรมของคำค้นหาหรือไม่เมื่อเปรียบเทียบกับการใช้ตัวดำเนินการเท่ากัน นี่คือความแตกต่างหลัก:
-
ตัวดำเนินการ
*=
:- บ่งบอกถึงการเชื่อมต่อแบบนอกทางซ้าย
- จะคืนค่าทุกแถวจากตารางทางซ้าย (
a
) โดยไม่คำนึงถึงว่ามีแถวที่ตรงกันในตารางทางขวาหรือไม่ (b
). - หากไม่มีการตรงกัน ผลลัพธ์จากตาราง
b
จะถูกแสดงเป็น NULL.
-
ตัวดำเนินการ
=
:- บ่งบอกถึงการเชื่อมต่อแบบภายใน
- จะคืนค่าเพียงแถวที่มีค่าตรงกันในทั้งสองตาราง (
a
และb
). - หากไม่มีการตรงกัน แถวเหล่านั้นจะไม่ถูกนำเข้ามาในชุดผลลัพธ์
ตัวอย่าง
พิจารณาสถานการณ์ต่อไปนี้ที่มีสองตาราง A
และ B
:
1. การใช้ตัวดำเนินการ *=
:
SELECT * FROM A, B WHERE A.id *= B.id
- การค้นหานี้จะคืนค่าทุกระเบียนจาก
A
และจะจับคู่ระเบียนจากB
ที่มี ID เท่ากัน
2. การใช้ตัวดำเนินการ =
:
SELECT * FROM A, B WHERE A.id = B.id
- ในกรณีนี้ จะมีเพียงระเบียนจาก
A
ที่มีระเบียนที่ตรงกันในB
เท่านั้นที่จะถูกนำเข้ามา
สรุป
ตัวดำเนินการ *=
เป็นสิ่งที่เหลือจากไวยากรณ์ SQL ในอดีตและเฉพาะเจาะจงต่อ Sybase ซึ่งใช้หลักในการทำการเชื่อมต่อแบบนอกทางซ้าย การเข้าใจตัวดำเนินการนี้มีความสำคัญ โดยเฉพาะเมื่อต้องจัดการกับโค้ดเก่าที่อาจมีการใช้มัน
โดยการรู้ว่าการทำงานของ *=
เมื่อเปรียบเทียบกับตัวดำเนินการเท่ากันปกติ คุณจะสามารถนำทางและดูแลโค้ดที่มีอยู่ได้ดีขึ้นในขณะที่มั่นใจได้ว่าคำค้นหาของคุณจะคืนผลลัพธ์ตามที่ต้องการ จำไว้ว่า แม้ว่าจะต้องเข้าใจตัวดำเนินการเก่า แต่ควรพิจารณาการเปลี่ยนไปใช้แนวทาง SQL ที่มีมาตรฐานมากขึ้นเมื่อเป็นไปได้เพื่อให้มีความเข้ากันได้และการเข้าใจที่กว้างขึ้น
หากคุณมีคำถามเพิ่มเติมเกี่ยวกับตัวดำเนินการ SQL หรือต้องการความชัดเจนเพิ่มเติม อย่าลังเลที่จะติดต่อเรา!