站內搜尋

Monday, August 26, 2013

[MYSQL] 找出重複的資料 (使用 GROUP BY 搭配 HAVING)

SELECT COUNT(*) as count FROM my_table GROUP BY name HAVING count > 1

HAVING 子句在 SQL 中的主要作用是針對已經進行分組的結果進行篩選。它通常與 GROUP BY 一起使用,用來篩選符合條件的組(即分組後的結果),而不是針對原始資料進行篩選。

在講解 HAVING 的具體用法前,先介紹一個與它類似但有些不同的子句:WHERE。兩者都可以用來篩選資料,但它們的使用時機不同:
    WHERE:在資料分組(GROUP BY)之前篩選資料。它直接作用在資料表的每一行。
    HAVING:在資料分組之後篩選資料。它作用在分組的結果上,通常用來篩選聚合函數(例如 COUNT()、SUM()、AVG() 等)的結果。

舉例:
SELECT
    product_id
    , SUM(quantity) AS total_quantity
FROM
    sales
WHERE
    order_date BETWEEN '2024-01-01'
    AND '2024-12-31'
GROUP BY
    product_id
HAVING
    total_quantity > 100

No comments:

Post a Comment