SQL Server UNION,子查詢使用

UNION指令如下:

SELECT MAX(價錢) FROM 匠匠
SELECT 品名 FROM 巨巨
UNION
SELECT 品名 FROM 匠匠
--JOIN是綜向的集合,UNION是橫向的集合
--特性是2邊重複的,會被排除

SELECT 品名 FROM 巨巨
UNION ALL
SELECT 品名 FROM 匠匠
--將重複的列出來


-------------------------------------------------------------------------
--算出所有男、女的職位有多少人(並統計總人數)
SELECT 稱呼,職稱,COUNT(*) AS 人數 
FROM 員工
GROUP BY GROUPING SETS((稱呼,職稱),())

--這是用UNION ALL全結合,結果同上
SELECT 稱呼,職稱,COUNT(*) AS 人數 
FROM 員工
GROUP BY 稱呼,職稱
UNION ALL
SELECT NULL,NULL,COUNT(*) AS 人數 FROM 員工

-------------------------------------------------------------------------

下面是用子查詢放在條件的使用:


--找出巨巨 表中,比匠匠 表最大的價錢還要大的產品:
SELECT * FROM 巨巨
WHERE 價錢>=123.79
--↓ ↓ ↓ ↓ ↓

SELECT * FROM 巨巨
WHERE 價錢>=(SELECT MAX(價錢) FROM 匠匠)
-------------------------------------------------------------------------

--找出 巨巨 表中與 匠匠 表重複的產品
SELECT * FROM 巨巨
WHERE 品名 IN(SELECT 品名 FROM 匠匠)

--找出 巨巨 表中獨佔的產品
SELECT * FROM 巨巨
WHERE 品名 NOT IN(SELECT 品名 FROM 匠匠)

--找出 巨巨 表中與匠匠 表重複的產品(用EXISTS,且該子查詢不能獨立)
SELECT * FROM 巨巨
WHERE EXISTS (SELECT * FROM 匠匠 WHERE 品名=巨巨.品名)

-------------------------------------------------------------------------

留言

熱門文章