programing

mysql에서 구별되는 2개의 열 조합 선택

testmans 2023. 11. 6. 21:41
반응형

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

이것을 위에 대고 사용하는 것이 좋습니다.

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

데모

제가 말하는 이유는 CONCAT를 사용하면 이 경우 원하는 결과가 나오지 않기 때문입니다.첫번째 쿼리는 나에게 5개의 행을 반환하지만 CONCAT는 나에게 4개의 행을 반환하는데 이는 부정확합니다.

당신이 내 말을 이해하길 바랍니다.


표의 열이 (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;

살아있는 실제 사례

첫 번째 열이 고유하다고 가정하면 다음 작업을 수행할 수 있습니다.

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

온라인으로 작동하는 보기: sqlfiddle

표의 열이 다음과 같다고 가정합니다.(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

이 쿼리는 컬럼 1과 컬럼 2의 조합이 고유한지 확인하는 동시에 컬럼 3의 최소값을 선택합니다.

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

이에 대한 가장 간단한 질문은

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

메서드별 그룹을 사용하면 추가 행이 반환됩니다. 각 필드를 명시적으로 확인하는 경우 카운트와 동일한 수의 레코드를 반환합니다(Distinct..).

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
)

언급URL : https://stackoverflow.com/questions/11277251/selecting-distinct-2-columns-combination-in-mysql

반응형