sql中union用法示例 通過實例學習union合并查詢

unionsql中用于合并兩個或多個select語句的結(jié)果集,并自動去除重復行;使用union all可保留所有行。1. union合并employees和managers表的name字段,去除重復。2. union all保留所有行,包括重復。3. union用于合并orders和returns表的總金額。

sql中union用法示例 通過實例學習union合并查詢

在SQL中,UNION操作符是合并查詢結(jié)果集的強大工具。讓我們通過一些實際的例子來深入理解它的用法。

首先要明確的是,UNION的主要作用是將兩個或多個SELECT語句的結(jié)果合并成一個結(jié)果集。它會自動去除重復的行,如果你希望保留所有行,可以使用UNION ALL。

讓我們從一個簡單的例子開始,假設我們有兩個表:employees和managers,它們都包含一個name字段。

-- 假設的employees表 CREATE TABLE employees (     id INT PRIMARY KEY,     name VARCHAR(100) );  -- 假設的managers表 CREATE TABLE managers (     id INT PRIMARY KEY,     name VARCHAR(100) );  -- 插入一些示例數(shù)據(jù) INSERT INTO employees (id, name) VALUES (1, 'Alice'), (2, 'Bob'), (3, 'Charlie'); INSERT INTO managers (id, name) VALUES (1, 'David'), (2, 'Eva'), (3, 'Charlie');

現(xiàn)在,我們可以使用UNION來合并這兩個表中的name字段:

SELECT name FROM employees UNION SELECT name FROM managers;

這個查詢的結(jié)果會是:

name -------- Alice Bob Charlie David Eva

注意,Charlie只出現(xiàn)了一次,因為UNION默認會去除重復的行。

如果你想保留所有行,包括重復的,可以使用UNION ALL:

SELECT name FROM employees UNION ALL SELECT name FROM managers;

這個查詢的結(jié)果會是:

name -------- Alice Bob Charlie David Eva Charlie

在實際應用中,UNION可以用于更復雜的場景,比如合并不同表中的不同字段,或者根據(jù)某些條件來合并數(shù)據(jù)。

例如,假設我們有兩個表,一個是orders表,另一個是returns表,我們希望得到所有訂單和退貨的總金額:

-- 假設的orders表 CREATE TABLE orders (     id INT PRIMARY KEY,     total_amount DECIMAL(10, 2) );  -- 假設的returns表 CREATE TABLE returns (     id INT PRIMARY KEY,     total_amount DECIMAL(10, 2) );  -- 插入一些示例數(shù)據(jù) INSERT INTO orders (id, total_amount) VALUES (1, 100.00), (2, 200.00); INSERT INTO returns (id, total_amount) VALUES (1, 50.00), (2, 100.00);  -- 使用UNION合并訂單和退貨的總金額 SELECT total_amount AS transaction_amount FROM orders UNION SELECT total_amount AS transaction_amount FROM returns;

這個查詢的結(jié)果會是:

transaction_amount ------------------ 100.00 200.00 50.00 100.00

在使用UNION時,需要注意以下幾點:

  • 每個SELECT語句中的列數(shù)和數(shù)據(jù)類型必須相同,否則會報錯。
  • UNION會自動去除重復行,如果你希望保留所有行,使用UNION ALL。
  • UNION操作符的性能可能會受到影響,特別是當處理大量數(shù)據(jù)時,因為它需要對結(jié)果集進行排序以去除重復行。

性能優(yōu)化方面,如果你確定沒有重復數(shù)據(jù),使用UNION ALL會比UNION更快,因為它不需要進行去重操作。

總的來說,UNION是一個非常有用的工具,可以幫助你合并來自不同表或不同查詢的結(jié)果集。通過這些例子,希望你能更好地理解和應用UNION操作符。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊5 分享