복붙노트

[SQL] MySQL은 별개의 2 열 조합을 선택

SQL

MySQL은 별개의 2 열 조합을 선택

나는 모습이 좋아하는 MySQL의 테이블이 있습니다 :

1   value1    value2    3534
2   value1    value1    8456
3   value1    value2    3566
4   value1    value3    7345
5   value2    value3    6734

나는이 예를 들어 내가 원하는 출력과 같이 표시됩니다 예를 들면 별개의 열 2, 3, 모든 행을 선택하는 질의를 필요로한다 :

1   value1    value2    3534
2   value1    value1    8456
4   value1    value3    7345
5   value2    value3    6734

나는 그것을 수행하는 방법에 대한 몇 가지 샘플을 발견했습니다하지만 그들은 모두 개별적으로 각각의 컬럼에 구별을 선택합니다.

해결법

  1. ==============================

    1.첫 번째 열이 고유한지 가정하면,이 작업을 수행 할 수 있습니다 :

    첫 번째 열이 고유한지 가정하면,이 작업을 수행 할 수 있습니다 :

    SELECT id, col2, col3, col4
    FROM yourtable
    WHERE id IN
    (
        SELECT MIN(id)
        FROM yourtable
        GROUP BY col2, col3
    )
    

    온라인으로 작업을 참조하십시오 sqlfiddle를

  2. ==============================

    2.더 나은 당신은 위의에 대해 사용합니다.

    더 나은 당신은 위의에 대해 사용합니다.

    SELECT id, col2, col3, col4
    FROM yourtable
    GROUP BY col2, col3;
    

    CONCAT를 사용하여, 나는이 경우 결과를 원하는지고 있지 않다 때문에 내가 말하고있는 이유입니다. 첫 번째 쿼리는 그러나 CONCAT 나에게 잘못 4 개 행을 반환 나에게 5 개 행을 반환합니다.

    당신이 내 포인트를 얻었기를 바랍니다.

    테이블 상정 컬럼 (ID, COL2, COL3, col4)이다.

    SELECT DISTINCT(CONCAT(col2, col3)) as "dummy column", id, col2, col3, col4
    FROM yourtable
    GROUP BY CONCAT(col2, col3);
    
    SELECT id, col2, col3, MIN(col4)
    FROM yourtable
    GROUP BY col2, col3;
    
  3. ==============================

    3.테이블의 열 (ID, COL1, COL2, COL3), 당신은 할 수 있습니다 가정 :

    테이블의 열 (ID, COL1, COL2, COL3), 당신은 할 수 있습니다 가정 :

    SELECT  *
    FROM    YourTable yt
    JOIN    (
            SELECT  MIN(id) as minid
            FROM    YourTable
            GROUP BY
                    col1, col2
            ) filter
    ON      filter.minid = yt.id
    
  4. ==============================

    4.열 세의 최소 값을 선택하는 동안이 쿼리는 1 열 및 2 열의 조합이 고유한지 확인합니다

    열 세의 최소 값을 선택하는 동안이 쿼리는 1 열 및 2 열의 조합이 고유한지 확인합니다

    SELECT col1, col2, MIN(col3)
    FROM yourTable
    GROUP BY col1, col2
    
  5. ==============================

    5.이것에 대한 간단한 질문입니다

    이것에 대한 간단한 질문입니다

    SELECT col1, col2, MIN(col3)
    FROM myTable
    GROUP BY col1, col2
    
  6. ==============================

    6.방법으로 그룹을 사용하면 명시 적으로 더 이상 반환하지만 개수로 기록 동일한 없음을 각 필드를 확인하는 곳 (고유 ..) 저에게 여분의 행을 반환

    방법으로 그룹을 사용하면 명시 적으로 더 이상 반환하지만 개수로 기록 동일한 없음을 각 필드를 확인하는 곳 (고유 ..) 저에게 여분의 행을 반환

    SELECT id, col2, col3, col4
    FROM yourtable yt
    WHERE id =
    (
     SELECT MIN(id)
     FROM yourtable yt1
     WHERE yt.col2 = yt1.col2
     AND yt.col3 = yt1.col3
    )
    
  7. from https://stackoverflow.com/questions/11277251/selecting-distinct-2-columns-combination-in-mysql by cc-by-sa and MIT license