ความแตกต่างระหว่างJOIN
และUNION
คืออะไร? ฉันขอตัวอย่างได้ไหม
ความแตกต่างระหว่างJOIN
และUNION
คืออะไร? ฉันขอตัวอย่างได้ไหม
คำตอบ:
UNION
วางบรรทัดจากข้อความค้นหาซึ่งกันและกันขณะที่JOIN
สร้างผลิตภัณฑ์แบบคาร์ทีเซียนและส่วนย่อยซึ่งเป็นการดำเนินการที่แตกต่างกันโดยสิ้นเชิง ตัวอย่างเล็กน้อยจากUNION
:
mysql> SELECT 23 AS bah
-> UNION
-> SELECT 45 AS bah;
+-----+
| bah |
+-----+
| 23 |
| 45 |
+-----+
2 rows in set (0.00 sec)
ตัวอย่างเล็ก ๆ น้อย ๆ ที่คล้ายJOIN
กันของ:
mysql> SELECT * FROM
-> (SELECT 23 AS bah) AS foo
-> JOIN
-> (SELECT 45 AS bah) AS bar
-> ON (33=33);
+-----+-----+
| foo | bar |
+-----+-----+
| 23 | 45 |
+-----+-----+
1 row in set (0.01 sec)
UNION-JOIN
และฉันจะทำให้สำเร็จใน SQL มาตรฐานได้อย่างไร Maria DB มีคำสั่งunion join
แต่ฐานข้อมูลอื่นไม่มี ขอบคุณ
Joins and Unions สามารถใช้เพื่อรวมข้อมูลจากหนึ่งตารางขึ้นไป ความแตกต่างอยู่ที่การรวมข้อมูล
ในแง่ง่ายร่วมรวมข้อมูลลงในคอลัมน์ใหม่ หากมีการรวมตารางสองตารางเข้าด้วยกันข้อมูลจากตารางแรกจะแสดงในชุดคอลัมน์หนึ่งชุดพร้อมกับคอลัมน์ของตารางที่สองในแถวเดียวกัน
สหภาพรวมข้อมูลลงในแถวใหม่ หากสองตารางนั้น“ รวมกัน” แล้วข้อมูลจากตารางแรกจะอยู่ในชุดของแถวหนึ่งและข้อมูลจากตารางที่สองในอีกชุดหนึ่ง แถวอยู่ในผลลัพธ์เดียวกัน
นี่คือภาพที่เห็นได้ของการเข้าร่วม คอลัมน์ของตาราง A และ B จะรวมกันเป็นผลลัพธ์เดียว
แต่ละแถวในผลลัพธ์มีคอลัมน์จากทั้งสองตาราง A และ B. แถวถูกสร้างขึ้นเมื่อคอลัมน์จากหนึ่งตารางจับคู่คอลัมน์จากอีกแถวหนึ่ง นัดนี้เรียกว่าเงื่อนไขการเข้าร่วม
สิ่งนี้ทำให้การรวมที่ยอดเยี่ยมสำหรับการค้นหาค่าและรวมไว้ในผลลัพธ์ นี่คือผลของการ den ปกติizing (กลับรายการ normalization) และเกี่ยวข้องกับการใช้คีย์ต่างประเทศในตารางหนึ่งเพื่อค้นหาค่าคอลัมน์โดยใช้คีย์หลักในอีก
ตอนนี้เปรียบเทียบภาพด้านบนกับสหภาพ ในการรวมกันแต่ละแถวภายในผลลัพธ์มาจากตารางหนึ่งหรืออีกแถว ในการรวมกันคอลัมน์จะไม่รวมกันเพื่อสร้างผลลัพธ์แถวถูกรวมเข้าด้วยกัน
ทั้งการรวมและสหภาพสามารถใช้เพื่อรวมข้อมูลจากหนึ่งตารางขึ้นไปเป็นผลลัพธ์เดียว พวกเขาทั้งสองไปเกี่ยวกับเรื่องนี้แตกต่างกัน ในขณะที่การรวมใช้เพื่อรวมคอลัมน์จากตารางต่าง ๆ การรวมกันจะใช้เพื่อรวมแถว
UNIONรวมผลลัพธ์ของแบบสอบถามสองรายการขึ้นไปเป็นชุดผลลัพธ์เดียวซึ่งรวมแถวทั้งหมดที่เป็นของแบบสอบถามทั้งหมดในสหภาพ
โดยใช้JOINคุณสามารถดึงข้อมูลจากสองตารางขึ้นไปโดยอ้างอิงจากความสัมพันธ์เชิงตรรกะระหว่างตาราง ตัวเชื่อมระบุว่า SQL ควรใช้ข้อมูลจากตารางหนึ่งเพื่อเลือกแถวในตารางอื่นอย่างไร
การดำเนินการ UNION นั้นแตกต่างจากการใช้ JOIN ที่รวมคอลัมน์จากสองตาราง
ตัวอย่างยูเนี่ยน:
SELECT 1 AS [Column1], 2 AS [Column2]
UNION
SELECT 3 AS [Column1], 4 AS [Column2]
เอาท์พุท:
Column1 Column2
-------------------
1 2
3 4
เข้าร่วมตัวอย่าง:
SELECT a.Column1, b.Column2 FROM TableA a INNER JOIN TableB b ON a.Id = b.AFKId
สิ่งนี้จะเอาท์พุทแถวทั้งหมดจากทั้งสองตารางซึ่งเงื่อนไขa.Id = b.AFKId
เป็นจริง
คุณอาจเห็นคำอธิบายแผนผังเดียวกันสำหรับทั้งคู่ แต่สิ่งเหล่านี้สับสนอย่างสิ้นเชิง
สำหรับยูเนี่ยน:
สำหรับเข้าร่วม:
การเข้าร่วมจะใช้สำหรับการแสดงคอลัมน์ที่มีชื่อเหมือนหรือต่างจากตารางที่ต่าง ผลลัพธ์ที่แสดงจะมีคอลัมน์ทั้งหมดที่แสดงเป็นรายบุคคล นั่นคือคอลัมน์จะจัดชิดติดกัน
ตัวดำเนินการชุด UNION ใช้สำหรับการรวมข้อมูลจากสองตารางที่มีคอลัมน์ที่มีประเภทข้อมูลเดียวกัน เมื่อดำเนินการ UNION ข้อมูลจากทั้งสองตารางจะถูกรวบรวมในคอลัมน์เดียวที่มีประเภทข้อมูลเดียวกัน
ตัวอย่างเช่น:
ดูตารางสองตารางที่แสดงด้านล่าง:
Table t1
Articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2
Table t2
manufacturer_id manufacturer
1 ABC Gmbh
2 DEF Co KG
ตอนนี้สำหรับดำเนินการชนิด JOIN แบบสอบถามจะแสดงด้านล่าง
SELECT articleno, article, manufacturer
FROM t1 JOIN t2 ON (t1.manufacturer_id =
t2.manufacturer_id);
articelno article manufacturer
1 hammer ABC GmbH
2 screwdriver DEF Co KG
นั่นคือการเข้าร่วม
ยูเนี่ยนหมายความว่าคุณต้องใช้กับตารางหรือชุดผลลัพธ์ที่มีจำนวนและประเภทของคอลัมน์เท่ากันและคุณเพิ่มส่วนนี้ลงในตาราง / ชุดผลลัพธ์ด้วยกัน ดูตัวอย่างนี้:
Table year2006
Articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2
Table year2007
Articleno article price manufacturer_id
1 hammer 6 $ 3
2 screwdriver 7 $ 4
SELECT articleno, article, price, manufactruer_id
FROM year2006
UNION
SELECT articleno, article, price, manufacturer_id
FROM year2007
articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2
1 hammer 6 $ 3
2 screwdriver 7 $ 4
พวกมันต่างกันอย่างสิ้นเชิง
เข้าร่วมช่วยให้คุณสามารถที่จะเกี่ยวข้องกับข้อมูลที่คล้ายกันในตารางที่แตกต่างกัน
สหภาพส่งกลับผลลัพธ์ของแบบสอบถามที่แตกต่างกันสองรายการเป็นชุดระเบียนเดียว
ยูเนี่ยนทำให้แบบสอบถามสองคำดูเหมือนกัน ตัวเชื่อมใช้สำหรับตรวจสอบตารางสองตารางขึ้นไปในข้อความสั่งแบบสอบถามเดียว
สามารถใช้การรวมและสหภาพเพื่อรวมข้อมูลจากหนึ่งตารางขึ้นไป ความแตกต่างอยู่ที่การรวมข้อมูล
กล่าวอย่างง่าย ๆ รวมข้อมูลเข้าด้วยกันในคอลัมน์ใหม่ หากมีการรวมตารางสองตารางเข้าด้วยกันข้อมูลจากตารางแรกจะแสดงในชุดคอลัมน์หนึ่งชุดพร้อมกับคอลัมน์ของตารางที่สองในแถวเดียวกัน
สหภาพรวมข้อมูลลงในแถวใหม่ หากสองตารางนั้น“ รวมกัน” แล้วข้อมูลจากตารางแรกจะอยู่ในชุดของแถวหนึ่งและข้อมูลจากตารางที่สองในอีกชุดหนึ่ง แถวอยู่ในผลลัพธ์เดียวกัน
โปรดจำไว้ว่าการรวมกันจะรวมผลลัพธ์ ( SQL Serverเพื่อให้แน่ใจ) (คุณสมบัติหรือข้อบกพร่อง?)
select 1 as id, 3 as value
union
select 1 as id, 3 as value
id, ค่า
1,3
select * from (select 1 as id, 3 as value) t1 inner join (select 1 as id, 3 as value) t2 on t1.id = t2.id
id, คุ้มค่า, id, ค่า
1,3,1,3
1. ส่วนคำสั่ง SQL Joins ใช้เพื่อรวมระเบียนจากสองตารางขึ้นไปในฐานข้อมูล เข้าร่วมเป็นวิธีการสำหรับการรวมเขตข้อมูลจากสองตารางโดยใช้ค่าที่พบบ่อยในแต่ละ
2. ตัวดำเนินการ SQL UNION รวมผลลัพธ์ของคำสั่ง SELECT ตั้งแต่สองประโยคขึ้นไป แต่ละคำสั่ง SELECT ภายใน UNION จะต้องมีจำนวนคอลัมน์เท่ากัน คอลัมน์จะต้องมีประเภทข้อมูลที่คล้ายกัน นอกจากนี้คอลัมน์ในแต่ละคำสั่ง SELECT ต้องอยู่ในลำดับเดียวกัน
ตัวอย่างเช่น: ตารางที่ 1 ลูกค้า / คำสั่งซื้อตารางที่ 2
เข้าร่วมภายใน:
SELECT ID, NAME, AMOUNT, DATE
จากลูกค้า
เข้าร่วมคำสั่งซื้อ
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
ยูเนี่ยน:
SELECT ID, NAME, AMOUNT, DATE
จากลูกค้า
ซ้ายเข้าร่วมคำสั่งซื้อ
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID
ยูเนี่ยน
SELECT ID, NAME, AMOUNT, DATE FROM CUSTOMERS
คำสั่งซื้อที่ถูกต้อง
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
การใช้ยูเนี่ยน
UNION จะรวมผลลัพธ์ของแบบสอบถามสองรายการขึ้นไปเป็นชุดผลลัพธ์เดียวซึ่งรวมแถวทั้งหมดที่เป็นของแบบสอบถามทั้งหมดในสหภาพ
ตัวอย่างยูเนี่ยน: เลือก 121 AS [คอลัมน์ 1], 221 AS [คอลัมน์ 2] ยูเนี่ยน เลือก 321 เป็น [คอลัมน์ 1], 422 เป็น [คอลัมน์ 2]
เอาท์พุท: คอลัมน์ 1 คอลัมน์ 2 ------------------- 121 221 321 422
กำลังใช้ JOIN
เข้าร่วมคุณสามารถดึงข้อมูลจากสองตารางขึ้นไปตามความสัมพันธ์เชิงตรรกะระหว่างตาราง
เข้าร่วมตัวอย่าง: เลือก a.Column1, b.Column2 จาก TblA a เข้าร่วม TblB b บน a.Id = b.id
ในนามธรรมพวกเขามีความคล้ายคลึงกันในชุดที่สองตารางหรือชุดผลลัพธ์จะถูกรวมกัน แต่ยูเนี่ยนเป็นจริงสำหรับการรวมชุดผลลัพธ์ที่มีจำนวนเดียวกันของคอลัมน์กับคอลัมน์ที่มีประเภทข้อมูลที่คล้ายกัน โครงสร้างเหมือนกันมีการเพิ่มแถวใหม่เท่านั้น
ในการรวมคุณสามารถรวมชุดตาราง / ผลลัพธ์กับโครงสร้างที่เป็นไปได้รวมถึงการเข้าร่วมคาร์ทีเซียนที่ไม่มีคอลัมน์ที่แชร์ / คล้ายกัน
ตัวดำเนินการ UNION ใช้สำหรับรวมคำสั่ง SELECT ตั้งแต่สองประโยคขึ้นไป
ในขณะที่เข้าร่วมสำหรับการเลือกแถวจากแต่ละตารางทั้งโดยวิธีการด้านในด้านนอกด้านซ้ายหรือขวา
โปรดดูที่นี่และที่นี่ มีคำอธิบายที่ดีกว่าด้วยตัวอย่าง
การดำเนินการยูเนี่ยนรวมกันเป็นผลมาจากการรวมแนวตั้งของแถวการดำเนินการยูเนี่ยนรวมกันเป็นผลมาจากการรวมแนวนอนของคอลัมน์
ฉันชอบคิดถึงความแตกต่างโดยทั่วไปว่าเป็น: