在MySQL中,當(dāng)需要在兩個(gè)或多個(gè)表之間進(jìn)行聯(lián)合查詢時(shí),我們可以使用聯(lián)合(UNION)操作符。聯(lián)合操作符可以將兩個(gè)或多個(gè)SELECT語(yǔ)句的結(jié)果集合并成一個(gè)結(jié)果集,且結(jié)果集中不含重復(fù)行。
舉個(gè)栗子,我們有兩個(gè)表:學(xué)生表(student)和課程表(course)。其中學(xué)生表包含學(xué)生的信息,包括學(xué)生的ID、姓名和所在班級(jí);課程表包含課程的信息,包括課程的ID、名稱和所屬學(xué)分?,F(xiàn)在我們需要查詢每個(gè)班級(jí)的必修課程和選修課程的名稱。那么我們就需要使用到聯(lián)合操作符。
SELECT c_name FROM course WHERE c_id IN (SELECT c_id FROM course_student WHERE s_id IN (SELECT s_id FROM student WHERE s_class = 'Class A')) UNION SELECT c_name FROM course WHERE c_id IN (SELECT c_id FROM optional_course WHERE s_id IN (SELECT s_id FROM student WHERE s_class = 'Class A'));
上面的查詢語(yǔ)句包含兩個(gè)SELECT語(yǔ)句,它們的結(jié)果集合并后返回。第一個(gè)SELECT語(yǔ)句查詢必修課的名稱,它的子查詢首先查詢學(xué)生表中班級(jí)為Class A的所有學(xué)生的ID,然后查詢選修課程表中與這些學(xué)生ID相關(guān)聯(lián)的課程ID,最后在課程表中查詢這些課程ID所對(duì)應(yīng)的課程名稱。第二個(gè)SELECT語(yǔ)句查詢選修課的名稱,它的子查詢與上面的類似,只不過查詢的是選修課程表而不是選修課程表。
總的來說,聯(lián)合操作符對(duì)于需要在多個(gè)表之間進(jìn)行查詢的情況非常有用,它可以讓我們將結(jié)果集合并在一起,從而省去了多次查詢的過程,提高了查詢效率。當(dāng)然,在使用聯(lián)合操作符時(shí)需要注意,結(jié)果集合并后會(huì)去除重復(fù)行,因此兩個(gè)結(jié)果集的字段數(shù)量、數(shù)據(jù)類型等需要保持一致。