เมื่อคุณทำการสืบค้นฐานข้อมูล คุณอาจต้องการรวมผลลัพธ์ของ SELECT . สองรายการขึ้นไป งบ. ตัวอย่างเช่น คุณอาจต้องการรับรายชื่อเมืองที่ลูกค้าของคุณอาศัยอยู่ และเมืองที่ธุรกิจของคุณมีสาขา คุณสามารถเรียกใช้แบบสอบถามสองรายการเพื่อให้บรรลุเป้าหมายนี้ แต่คุณอาจต้องการผลลัพธ์ในหนึ่งข้อความค้นหา
นั่นคือสิ่งที่ SQL UNION โอเปอเรเตอร์เข้ามา UNION clause สามารถใช้เพื่อรวมผลลัพธ์ของ SELECT . ตั้งแต่สองตัวขึ้นไป แบบสอบถามในชุดผลลัพธ์เดียว
ในบทช่วยสอนนี้ เราจะอธิบายพื้นฐานของ SQL UNION โอเปอเรเตอร์และหารือเกี่ยวกับตำแหน่งที่คุณอาจต้องการใช้คำสั่งนี้เมื่อคุณทำงานกับฐานข้อมูล
ทบทวนแบบสอบถาม
โปรแกรมเมอร์ใช้แบบสอบถามเพื่อดึงข้อมูลจากฐานข้อมูล แบบสอบถามมักจะเริ่มต้นด้วย SQL SELECT คำสั่งและใช้เพื่อดึงข้อมูลตามชุดของเกณฑ์ แบบสอบถามมักจะรวม FROM โอเปอเรเตอร์ ซึ่งระบุว่าตารางใดจะถูกสอบถาม ท่ามกลางโอเปอเรเตอร์อื่นๆ ที่สามารถกรองข้อมูลผลลัพธ์ได้
นี่คือไวยากรณ์ทั่วไปสำหรับ SQL แบบสอบถาม:
SELECT column_name FROM table_name WHERE your_condititions_are_met;
นี่คือตัวอย่าง SQL แบบสอบถามที่ส่งคืนรายชื่อพนักงานทั้งหมด:
SELECT name FROM employees;
ผลลัพธ์จากการสืบค้นของเรามีดังนี้:
| ชื่อ |
| ลุค ไมค์ ฮันนาห์ เจฟฟ์ อเล็กซิส เอ็มม่า โยนาห์ |
(7 แถว)
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
หากคุณต้องการดึงข้อมูลจากหลายคอลัมน์ คุณสามารถทำได้โดยแยกชื่อคอลัมน์ด้วยเครื่องหมายจุลภาค หากคุณต้องการรับข้อมูลจากทุกคอลัมน์ คุณสามารถใช้เครื่องหมายดอกจัน (* ) แทน ซึ่งแทนทุกคอลัมน์ในตาราง
SQL ยูเนี่ยน
SQL UNION ตัวดำเนินการสามารถใช้เพื่อรวมผลลัพธ์ของการสืบค้นข้อมูลตั้งแต่สองรายการขึ้นไปเป็นคำตอบเดียวซึ่งส่งผลให้เป็นตารางเดียว
เพื่อที่จะใช้ UNION โอเปอเรเตอร์ต้องเป็นไปตามเงื่อนไขสองประการ ประการแรก ชนิดข้อมูลของคอลัมน์ใหม่ควรเข้ากันได้—ถ้าเงินเดือนเป็นจำนวนเต็มในตารางหนึ่งและทศนิยมในอีกตารางหนึ่ง สหภาพจะไม่ทำงาน ประการที่สอง จำนวนและลำดับของคอลัมน์ในการค้นหาของคุณต้องเหมือนกัน
นี่คือไวยากรณ์สำหรับ SQL UNION แบบสอบถาม:
SELECT column_name FROM table1_name UNION SELECT column_name FROM table2_name;
ลองใช้ตัวอย่างเพื่อแสดงให้เห็นว่า SQL UNION ตัวดำเนินการทำงาน สมมติว่าเราเป็นธุรกิจที่ต้องส่งประกาศถึงลูกค้าทุกท่าน นอกจากนี้ เราต้องการให้พนักงานทุกคนได้รับประกาศนี้เพื่อให้ทราบถึงสิ่งที่เกิดขึ้น
เราสามารถใช้ SQL . ต่อไปนี้ สอบถามเพื่อรับรายชื่ออีเมลของทั้งลูกค้าและพนักงานของเรา เพื่อให้เราสามารถส่งประกาศทั้งหมด:
SELECT name, email FROM employees UNION SELECT name, email FROM customers;
นี่คือผลลัพธ์จากการสืบค้นของเรา:
| ชื่อ | อีเมล |
| เอ็มม่า | emma.a@gmail.com |
| โจนาห์ | jonah.h@gmail.com |
| ฮันนาห์ | hannah.y@gmail.com |
| ลุค | luke.e@gmail.com |
| จอห์น | john.p@outlook.com |
| เจฟฟ์ | geoff.l@gmail.com |
| อเล็กซิส | alexis.e@gmail.com |
| เฟร็ด | fred.s@gmail.com |
| เอริน | erin.a@gmail.com |
| เคธี่ | katy.l@gmail.com |
| แอน | anne.s@gmail.com |
| ทอม | tom.h@gmail.com |
| ไมค์ | mike.h@gmail.com |
| ฮันนาห์ | hannah.p@gmail.com |
(14 แถว)
อย่างที่คุณเห็น UNION . ของเรา แบบสอบถามส่งคืนรายชื่อและที่อยู่อีเมลทั้งหมดสำหรับทั้งลูกค้าและพนักงานของเรา
เป็นที่น่าสังเกตว่า UNION ตัวดำเนินการลบแถวที่ซ้ำกันออกจากผลลัพธ์สุดท้ายที่รวมกัน ซึ่งหมายความว่าหากพนักงานคนใดคนหนึ่งเป็นลูกค้า เราก็จะเห็นข้อมูลของพวกเขาเพียงครั้งเดียว
แม้ว่าจะได้ผลในตัวอย่างข้างต้น แต่ถ้าคุณต้องการส่งคืนผลลัพธ์ที่มีแถวที่ซ้ำกัน คุณจะต้องเพิ่ม ALL คำหลักในแบบสอบถามของคุณ นี่คือตัวอย่าง:
SELECT name, email FROM employees UNION ALL SELECT name, email FROM customers;
บทสรุป
ในบทช่วยสอนนี้ เราได้แจกแจงวิธีใช้ UNION โอเปอเรเตอร์บน SQL เซิร์ฟเวอร์ ตามที่เราได้พูดคุยกัน UNION สามารถใช้เพื่อรับข้อมูลจากสองตารางและรวมการตอบสนองเป็นตารางเดียว ตัวอย่างเช่น หากคุณต้องการรับรายชื่อที่อยู่ซัพพลายเออร์และผู้จัดจำหน่ายของคุณ ซึ่งทั้งคู่จัดเก็บไว้ในตารางแยกกัน คุณสามารถใช้ UNION สอบถามค่ะ