簡體   English   中英

根據 MySql 中的非唯一列查找行

[英]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值(即不僅200201 )的行,如果不是有意的,請過濾它們:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM