萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> sql union 語法與實例

sql union 語法與實例

sql union 語法與實例

sql union允許您結合的結果2個或更多台個人查詢。聯盟不同,它是由查詢是相互獨立的子查詢從。聯盟結合了這些個別選擇輸出,並列出作為一個單一的輸出表中的一部分。
SELECT column1, ... column_n
FROM derived_table
UNION [ALL]
SELECT column1, ... column_n
FROM derived_table

union每個查詢的SQL語句必須要有領域的結果相同數量的設置與類似的數據類型。此外,在使用聯盟,只有選擇不同的值(類似於選擇不同的)。

實例一

SELECT Item
FROM Antiques
UNION
SELECT ItemDesired
FROM Orders
在這個例子中,如果一個項目出現兩個古董和Orders表,它將出現在您的結果集一次。
實例二
SELECT FirstName, LastName
FROM EmployeeAddressTable
WHERE City IN ('Losantiville','Paris')
UNION SELECT OwnerFirstName,OwnerLastName
FROM AntiqueOwners
WHERE City IN ('Losantiville','Paris','San Diego')

========================

sql join 語句多表查詢


到目前為止,我們一直在尋找的查詢,檢索時間從一個單一的表中的數據。單表查詢是有用的,但他們不利用SQL語言的全部功能。 SQL是關系數據庫教程查詢語言,因此,其最重要的特點之一是它能夠從幾個不同的檢索相關的表的信息。在關系型數據庫而言,這一過程被稱為連接。該表將被命名為參加在從選擇該條的規定與以逗號分隔每個表的名稱。在參加由在WHERE子句謂詞定義的表之間的關系。謂詞可以指任何從聯接的表列形式的關系。

例如

SELECT EmployeeAddressTable.EmployeeIDNo,
EmployeeAddressTable.FirstName,
EmployeeAddressTable.LastName,
EmployeeStatisticsTable.Salary
FROM EmployeeAddressTable, EmployeeStatisticsTable
WHERE EmployeeAddressTable.EmployeeIDNo = EmployeeStatisticsTable.EmployeeIDNo

前面的例子檢索編號,名字,姓氏和雇員的薪水。來自薪酬領域連接表。此SQL語句將返回從EmployeeAddressTable和EmployeeStatisticsTable表的所有行,如果有一個匹配的EmployeeIDNo無論是EmployeeAddressTable和EmployeeStatisticsTable表的價值。

內加入
這是,事實上,在加入最常見的類型。內連接返回從多個表中的所有行加入條件得到滿足。必須有一個共同的領域,以兩個表匹配的值。一個內部聯接不能嵌套在一個左或右加入加入。

SELECT EmployeeAddressTable.EmployeeIDNo,
EmployeeAddressTable.FirstName,
EmployeeAddressTable.LastName,
EmployeeStatisticsTable.Salary
FROM EmployeeAddressTable INNER JOIN EmployeeStatisticsTable
ON EmployeeAddressTable.EmployeeIDNo = EmployeeStatisticsTable.EmployeeIDNo

隨著內部聯接操作,任何關系比較運算符可以用於ON子句:=,“,”,“=,”=,或“<”。上面的例子返回所有情況下的'雇員ID'的'雇員'表的字段值相匹配'的'EmployeeStatisticsTable'表的EmployeeID'字段。如果在EmployeeAddressTable行並無EmployeeStatisticsTable比賽,這些行會不會列出。

左加入
左加入運算符用於創建一個左外連接,包括從第一個(左邊的所有記錄的兩個表),即使沒有匹配的第二記錄值。


SELECT EmployeeAddressTable.EmployeeIDNo,
EmployeeAddressTable.FirstName,
EmployeeAddressTable.LastName,
EmployeeStatisticsTable.Salary
FROM EmployeeStatisticsTable LEFT JOIN EmployeeAddressTable
ON EmployeeAddressTable.EmployeeIDNo = EmployeeStatisticsTable.EmployeeIDNo

此SQL語句返回所有從第一個表(EmployeeStatisticsTable)行,即使有第二個表(EmployeeAddressTable)不匹配。如果在EmployeeStatisticsTable行並無EmployeeAddressTable比賽,這些行也將上市。在結果集,他們將顯示為。

right join
加入經營者的權利是用來創造一個良好的外部聯接,包括所有由第二(右記錄兩個表),即使沒有匹配在第一的記錄值。

SELECT EmployeeAddressTable.EmployeeIDNo,
EmployeeAddressTable.FirstName,
EmployeeAddressTable.LastName,
EmployeeStatisticsTable.Salary
FROM EmployeeStatisticsTable RIGHT JOIN EmployeeAddressTable
ON EmployeeAddressTable.EmployeeIDNo = EmployeeStatisticsTable.EmployeeIDNo

copyright © 萬盛學電腦網 all rights reserved