[英]Find rows based on non unique column in MySql
鑒於下表:
Column1 | Column2
10 | 200
10 | 201
11 | 100
11 | 200
11 | 300
12 | 200
13 | 100
13 | 200
13 | 201
13 | 300
我希望為每個唯一的 column1 提取 column2 包含值 200 和 201 的所有行。 輸出應該是:
10 | 200
10 | 201
13 | 200
13 | 201
該表包含大約 800 萬行,我能想出的所有東西都很慢。
這樣做:
SELECT
t.*
FROM
t
INNER JOIN
(SELECT
Column1
FROM
t
WHERE
Column2 IN (200,201)
GROUP BY
Column1
HAVING
COUNT(DISTINCT Column2)>1) AS c
ON t.Column1=c.Column1
- 但請注意,這將輸出具有所有Column2
值(即不僅200
和201
)的行,如果不是有意的,請過濾它們:
SELECT
t.*
FROM
t
INNER JOIN
(SELECT
Column1
FROM
t
WHERE
Column2 IN (200,201)
GROUP BY
Column1
HAVING
COUNT(DISTINCT Column2)>1) AS c
ON t.Column1=c.Column1
WHERE
Column2 IN (200,201)
小提琴在這里可用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.