查找SELECT 相同列的狀況下,例如選擇一個月每一天的某幾項數據,至關於查詢一個月三十行數據,爲了在一個表中顯示就要使用union函數。編輯器
eg:ide
SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-01%' AND act = '1005001001' UNION ALL SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-02%' AND act = '1005001001' UNION ALL SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-03%' AND act = '1005001001' UNION ALL SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-04%' AND act = '1005001001' UNION ALL SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-05%' AND act = '1005001001' UNION ALL SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-06%' AND act = '1005001001' UNION ALL SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-07%' AND act = '1005001001' UNION ALL SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-08%' AND act = '1005001001' UNION ALL SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-09%' AND act = '1005001001' UNION ALL SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-10%' AND act = '1005001001' UNION ALL SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-11%' AND act = '1005001001' UNION ALL SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-12%' AND act = '1005001001' UNION ALL SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-13%' AND act = '1005001001' UNION ALL SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-14%' AND act = '1005001001' UNION ALL SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-15%' AND act = '1005001001' UNION ALL SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-16%' AND act = '1005001001' UNION ALL SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-17%' AND act = '1005001001' UNION ALL SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-18%' AND act = '1005001001' UNION ALL SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-19%' AND act = '1005001001' UNION ALL SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-20%' AND act = '1005001001' UNION ALL SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-21%' AND act = '1005001001' UNION ALL SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-22%' AND act = '1005001001' UNION ALL SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-23%' AND act = '1005001001' UNION ALL SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-24%' AND act = '1005001001' UNION ALL SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-25%' AND act = '1005001001' UNION ALL SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-26%' AND act = '1005001001' UNION ALL SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-27%' AND act = '1005001001' UNION ALL SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-28%' AND act = '1005001001' UNION ALL SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-29%' AND act = '1005001001' UNION ALL SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-30%' AND act = '1005001001' UNION ALL SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-31%' AND act = '1005001001'
1. UNION 表示去重的結果;函數
2. UNION ALL 表示不進行去重的結果;ui
UNION函數就是用來拼表的,條件是每一個選擇語句的列相同,這個列的內容可能相同或者不一樣,不一樣的時候以第一個選擇語句爲準。spa
需求在哪?好比要使用拼接以後的表格,就頗有用了,場景:一個月30天,求每一天去重的日活量,而後求和再作平均,這就須要將去重的日活拼接成一張30行的表,而後再作SUM而後再求平均。excel
根據實際須要使用UNION函數,使用SQL最重要的技能就是理解表格之間的關係,先後層次,你須要什麼表格就使用鏈接JOIN、UNION等方法人爲實現什麼表格。code
在重複查詢的時候,通常都是修改一段SQL文的小部分語句,好比日期的天的數字,這種狀況就須要掌握高級編輯方法來提升編輯效率,使用excel和高級文本編輯器(editplus等)以及正則化手段。blog
方法總結:字符串
1. 寫好第一句SQL文;it
2. 使用excel拼接SQL文,即複製重複部分,利用excel自動生成不重複部分(好比日期自動+1);
3. 使用文本編輯器的正則化功能實現SQL文的修飾。
注意:使用Ctrl + D 來複制(向下填充)Ctrl + R 向右填充;修改excel單元格格式;excel的CONCATENATE()函數能夠拼接多個字符串;
學會使用excel的單元格引用,$B3中的$符號表示絕對引用B列,非絕對引用3行,行數能夠拖動自動改變,用來引用單元格的內容,這在須要使用單元格內容的SQL文中很重要。
editplus 使用 Ctrl + H 進入正則化替換。