PostgreSQL Union, Union ALL พร้อมตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
PostgreSQL คำสั่ง UNION จะรวมผลลัพธ์จากคำสั่ง SELECT สองคำสั่งขึ้นไปเข้าเป็นชุดผลลัพธ์เดียวและลบแถวที่ซ้ำกันออก ในขณะที่ UNION ALL จะเก็บทุกแถวไว้ ซึ่งเป็นตัวเลือกที่เร็วกว่าเมื่อไม่สนใจแถวที่ซ้ำกัน
ความหมายของ PostgreSQL ยูเนี่ยน?
การขอ PostgreSQL ตัวดำเนินการ UNION ใช้สำหรับรวมชุดผลลัพธ์จากคำสั่ง SELECT มากกว่าหนึ่งคำสั่งเข้าเป็นชุดผลลัพธ์เดียว โดยแถวที่ซ้ำกันจากผลลัพธ์ของคำสั่ง SELECT จะถูกลบออก ตัวดำเนินการ UNION ทำงานภายใต้เงื่อนไขสองประการ:
- คำสั่ง SELECT ต้องส่งคืนจำนวนคอลัมน์เท่ากัน
- ประเภทข้อมูลของคอลัมน์ที่เกี่ยวข้องทั้งหมดต้องเข้ากันได้
ตัวดำเนินการ UNION มักใช้เพื่อรวมข้อมูลจากตารางที่เกี่ยวข้องซึ่งยังไม่ได้รับการทำให้เป็นมาตรฐานอย่างสมบูรณ์
วากยสัมพันธ์
SELECT expression_1, expression_2, ... expression_n FROM tables [WHERE condition(s)] UNION SELECT expression_1, expression_2, ... expression_n FROM tables [WHERE condition(s)];
นี่คือคำอธิบายสำหรับพารามิเตอร์ข้างต้น:
expression_1, expression_2, … expression_n คือการคำนวณหรือคอลัมน์ที่คุณต้องการดึงข้อมูล
ตารางคือตารางที่คุณต้องการดึงข้อมูลบันทึก
เงื่อนไข WHERE คือเงื่อนไขที่ต้องปฏิบัติตามจึงจะสามารถดึงข้อมูลบันทึกได้
หมายเหตุ เนื่องจากตัวดำเนินการ UNION ไม่ส่งคืนค่าซ้ำ การใช้ UNION DISTINCT จึงไม่มีผลกระทบต่อผลลัพธ์
PostgreSQL สหภาพ
ตัวดำเนินการ UNION จะลบข้อมูลที่ซ้ำกันออก ในลักษณะเดียวกับที่ เลือกความแตกต่าง ใช่แล้ว เรามาลองสาธิตกันดู เรามีฐานข้อมูลชื่อ Demo ซึ่งประกอบด้วยตารางดังต่อไปนี้:
หนังสือ:
ราคา:
ให้เรารันคำสั่งต่อไปนี้:
SELECT id FROM Book UNION SELECT id FROM Price;
คำสั่งจะส่งคืนสิ่งต่อไปนี้:
คอลัมน์ ID จะปรากฏทั้งในตารางหนังสือและราคา อย่างไรก็ตาม จะปรากฏเพียงครั้งเดียวในผลลัพธ์ เหตุผลก็คือว่า PostgreSQL ตัวดำเนินการ UNION ไม่ส่งคืนค่าซ้ำ
PostgreSQL ยูเนี่ยนทั้งหมด
ตัวดำเนินการนี้จะรวมชุดผลลัพธ์จากคำสั่ง SELECT มากกว่าหนึ่งคำสั่งโดยไม่ลบค่าซ้ำ ตัวดำเนินการกำหนดให้คำสั่ง SELECT แต่ละคำสั่งมีจำนวนฟิลด์ที่ใกล้เคียงกันในชุดผลลัพธ์ที่มีประเภทข้อมูลที่คล้ายกัน
ไวยากรณ์:
SELECT expression_1, expression_2, ... expression_n FROM tables [WHERE condition(s)] UNION ALL SELECT expression_1, expression_2, ... expression_n FROM tables [WHERE condition(s)];
นี่คือคำอธิบายสำหรับพารามิเตอร์ข้างต้น:
expression_1, expression_2, … expression_n คือการคำนวณหรือคอลัมน์ที่คุณต้องการดึงข้อมูล
ตารางคือตารางที่คุณต้องการดึงข้อมูลบันทึก
เงื่อนไข WHERE คือเงื่อนไขที่ต้องปฏิบัติตามจึงจะสามารถดึงข้อมูลบันทึกได้
หมายเหตุ คำสั่ง SELECT ทั้งสองคำสั่งต้องมีจำนวนนิพจน์เท่ากัน
เราจะใช้ตารางดังต่อไปนี้:
หนังสือ:
ราคา:
เรียกใช้คำสั่งต่อไปนี้:
SELECT id FROM Book UNION ALL SELECT id FROM price;
ควรส่งคืนสิ่งต่อไปนี้:
รายการซ้ำยังไม่ได้ถูกลบออก
สั่งโดย
การขอ PostgreSQL ตัวดำเนินการ UNION สามารถใช้ร่วมกับคำสั่ง ORDER BY เพื่อจัดลำดับผลลัพธ์ของแบบสอบถาม เพื่อสาธิต เราจะใช้ตารางต่อไปนี้:
ราคา:
ราคา2:
ต่อไปนี้คือคำสั่งที่สาธิตวิธีใช้ตัวดำเนินการ UNION ร่วมกับคำสั่ง ORDER BY:
SELECT * FROM Price UNION SELECT * FROM Price2 ORDER BY price;
คำสั่งจะส่งคืนสิ่งต่อไปนี้:
บันทึกถูกจัดเรียงตามคอลัมน์ราคา ส่วนคำสั่งจะเรียงลำดับระเบียนจากน้อยไปมากตามค่าเริ่มต้น หากต้องการเรียงลำดับจากมากไปน้อย ให้เพิ่มส่วนคำสั่ง DESC ดังที่แสดงด้านล่าง:
SELECT * FROM Price UNION SELECT * FROM Price2 ORDER BY price DESC;
คำสั่งจะส่งคืนสิ่งต่อไปนี้:
บันทึกได้รับการเรียงลำดับตามคอลัมน์ราคาจากมากไปน้อย
ควรใช้ Union เมื่อใด และควรใช้ Union All เมื่อใด?
ใช้ตัวดำเนินการ UNION เมื่อคุณมีหลายตารางที่มีโครงสร้างคล้ายกัน แต่ต้องการแยกออกจากกันด้วยเหตุผลบางประการ เหมาะอย่างยิ่งเมื่อคุณต้องการลบหรือกำจัดข้อมูลที่ซ้ำกัน
ใช้ตัวดำเนินการ UNION ALL เมื่อคุณไม่จำเป็นต้องลบหรือกำจัดข้อมูลที่ซ้ำกัน
การใช้งาน pgAdmin
ต่อไปนี้เรามาดูกันว่าการดำเนินการทั้งสามอย่างนี้ทำได้อย่างไรโดยใช้ pgAdmin
วิธีใช้ PostgreSQL ยูเนี่ยนใช้ pgAdmin
ต่อไปนี้เป็นขั้นตอนการใช้งานโดยละเอียด PostgreSQL การเชื่อมต่อ UNION ผ่านทาง pgAdmin:
ขั้นตอน 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ
ขั้นตอน 2) จากแถบนำทางด้านซ้าย คลิก ฐานข้อมูล จากนั้นคลิก สาธิต
ขั้นตอน 3) พิมพ์แบบสอบถามในตัวแก้ไขแบบสอบถาม:
SELECT * FROM Price UNION SELECT * FROM Price2 ORDER BY price DESC;
ขั้นตอน 4) คลิกปุ่มดำเนินการ
ควรส่งคืนสิ่งต่อไปนี้:
ยูเนี่ยนทั้งหมด
ขั้นตอน 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ
ขั้นตอน 2) จากแถบนำทางด้านซ้าย คลิก ฐานข้อมูล จากนั้นคลิก สาธิต
ขั้นตอน 3) พิมพ์แบบสอบถามในตัวแก้ไขแบบสอบถาม:
SELECT id FROM Book UNION ALL SELECT id FROM price;
ขั้นตอน 4) คลิกปุ่มดำเนินการ
ควรส่งคืนสิ่งต่อไปนี้:
สั่งโดย
ตัวดำเนินการ UNION ALL สามารถใช้ร่วมกับคำสั่ง ORDER BY เพื่อจัดลำดับผลลัพธ์ในชุดผลลัพธ์ ตัวอย่างเช่น:
SELECT id FROM Book UNION ALL SELECT id FROM price ORDER BY id;
คำสั่งจะส่งคืนสิ่งต่อไปนี้:
สั่งผลแล้ว.
ดาวน์โหลดฐานข้อมูลที่ใช้ในบทช่วยสอนนี้


















