SQLite的 UNION 子句/運算符用于合并兩個(gè)或多個(gè) SELECT 語(yǔ)句的結果,不返回任何重復的行。
為了使用 UNION,每個(gè) SELECT 被選擇的列數必須是相同的,相同數目的列表達式,相同的數據類(lèi)型,并確保它們有相同的順序,但它們不必具有相同的長(cháng)度。
UNION 的基本語(yǔ)法如下:
SELECT column1 [, column2 ]FROM table1 [, table2 ][WHERE condition]UNIONSELECT column1 [, column2 ]FROM table1 [, table2 ][WHERE condition]
這里給定的條件根據需要可以是任何表達式。
假設有下面兩個(gè)表,(1)COMPANY 表如下所示:
sqlite> select * from COMPANY;ID NAME AGE ADDRESS SALARY---------- -------------------- ---------- ---------- ----------1 Paul 32 California 20000.02 Allen 25 Texas 15000.03 Teddy 23 Norway 20000.04 Mark 25 Rich-Mond 65000.05 David 27 Texas 85000.06 Kim 22 South-Hall 45000.07 James 24 Houston 10000.0
(2)另一個(gè)表是 DEPARTMENT,如下所示:
ID DEPT EMP_ID---------- -------------------- ----------1 IT Billing 12 Engineering 23 Finance 74 Engineering 35 Finance 46 Engineering 57 Finance 6
現在,讓我們使用 SELECT 語(yǔ)句及 UNION 子句來(lái)連接兩個(gè)表,如下所示:
sqlite> SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT ON COMPANY.ID = DEPARTMENT.EMP_ID UNION SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT ON COMPANY.ID = DEPARTMENT.EMP_ID;
這將產(chǎn)生以下結果:
EMP_ID NAME DEPT---------- -------------------- ----------1 Paul IT Billing2 Allen Engineerin3 Teddy Engineerin4 Mark Finance5 David Engineerin6 Kim Finance7 James Finance
UNION ALL 運算符用于結合兩個(gè) SELECT 語(yǔ)句的結果,包括重復行。
適用于 UNION 的規則同樣適用于 UNION ALL 運算符。
UNION ALL 的基本語(yǔ)法如下:
SELECT column1 [, column2 ]FROM table1 [, table2 ][WHERE condition]UNION ALLSELECT column1 [, column2 ]FROM table1 [, table2 ][WHERE condition]
這里給定的條件根據需要可以是任何表達式。
現在,讓我們使用 SELECT 語(yǔ)句及 UNION ALL 子句來(lái)連接兩個(gè)表,如下所示:
sqlite> SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT ON COMPANY.ID = DEPARTMENT.EMP_ID UNION ALL SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT ON COMPANY.ID = DEPARTMENT.EMP_ID;
這將產(chǎn)生以下結果:
EMP_ID NAME DEPT---------- -------------------- ----------1 Paul IT Billing2 Allen Engineerin3 Teddy Engineerin4 Mark Finance5 David Engineerin6 Kim Finance7 James Finance1 Paul IT Billing2 Allen Engineerin3 Teddy Engineerin4 Mark Finance5 David Engineerin6 Kim Finance7 James Finance
聯(lián)系客服