SQL之 UNION ALL 和UNION
有時候復(fù)雜的邏輯處理可以交給SQL來處理,自認(rèn)為是比java處理要快點。
舉個例子:如何統(tǒng)計每個品牌的的偏好用戶數(shù)?
當(dāng)時我做的處理是在java中處理這些品牌,若是品牌相同,就加一,但是這種方法很慢,用戶體驗很不好。
后來才發(fā)現(xiàn)sql處理速度會很快,就用UNION ALL 來處理。在這里簡單說一下UNION和UNION ALL區(qū)別,這兩個都是用于合并select的結(jié)果集。只不過UNION ALL可以允許有重復(fù)值。一條sql就可以解決問題。如下:
SELECT
T.BRANDNAME AS brandName,
SUM(T.NUMB) AS userNum
FROM
(
SELECT
PREFER_BRAND1 AS BRANDNAME,
COUNT(PREFER_BRAND1) AS NUMB
FROM
TAS_TAS.TERM_CONT_RECOM_ITEM_201605
GROUP BY
PREFER_BRAND1
UNION ALL
SELECT
PREFER_BRAND2 AS BRANDNAME,
COUNT(PREFER_BRAND2) AS NUMB
FROM
TAS_TAS.TERM_CONT_RECOM_ITEM_201605
GROUP BY
PREFER_BRAND2
UNION ALL
SELECT
PREFER_BRAND3 AS BRANDNAME,
COUNT(PREFER_BRAND3) AS NUMB
FROM
TAS_TAS.TERM_CONT_RECOM_ITEM_201605
GROUP BY
PREFER_BRAND3 ) T
WHERE
T.BRANDNAME!='-9'
GROUP BY
T.BRANDNAME
ORDER BY
SUM(T.NUMB) DESC
這樣就可以知道每個品牌的偏好人數(shù)了。
?
轉(zhuǎn)載于:https://www.cnblogs.com/qinbb/p/5644311.html
總結(jié)
以上是生活随笔為你收集整理的SQL之 UNION ALL 和UNION的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 包装函数
- 下一篇: mybatis_SQL映射(1)