복붙노트

[SQL] MySQL의에서 동일한 열 값이 행을 반환하는 방법

SQL

MySQL의에서 동일한 열 값이 행을 반환하는 방법

다음 테이블 -을 고려하자

ID Score
1  95

2  100

3  88

4  100

5  73

나는 총 SQL 멍청한 놈을 모르지만, 내가 어떻게 점수가 모두 ID가 2와 4를 특징으로 반환합니까? 그것 모두 ID 2, 4에 등장 이후 100을 반환해야합니다 그래서

해결법

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

    1.이것은 "세트 - 내 - 세트"쿼리의 예입니다. 그것은 가장 유연한 접근 방식 때문에, HAVING 절에 집계를 권장합니다.

    이것은 "세트 - 내 - 세트"쿼리의 예입니다. 그것은 가장 유연한 접근 방식 때문에, HAVING 절에 집계를 권장합니다.

    select score
    from t
    group by score
    having sum(id = 2) > 0 and -- has id = 2
           sum(id = 4) > 0     -- has id = 4
    

    이것이하는 일은 점수로 집계합니다. 그런 다음 HAVING 절 (합계 (ID = 2))의 첫 번째 부분은 "2"의 점수 당 얼마나 많은 카운트 업된다. 두 번째는 얼마나 많은 "4"의를 기대하고있다. 는 "2"및 "4"에 있습니다 만 점수가 반환됩니다.

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

    2.

    SELECT score
    FROM t
    WHERE id in (2, 4)
    HAVING COUNT(*) = 2 /* replace this with the number of IDs */
    

    이 선택 ID 2 HAVING 절은 우리가 두 개의 행을 발견되도록 제와 행; 하나가 누락 된 경우, 카운트 미만이 될 것입니다.

    이 ID는 고유 한 열임을 가정합니다.

  3. ==============================

    3.

    select Score
    from tbl a
    where a.ID = 2 -- based off Score with ID = 2
        --include Score only if it exists with ID 6 also
        and exists (
            select 1
            from tbl b
            where b.Score = a.Score and b.ID = 6
        )
        -- optional?  ignore Score that exists with other ids as well
        and not exists (
            select 1
            from tbl c
            where c.Score = a.Score and c.ID not in (2, 6)
        )
    
  4. from https://stackoverflow.com/questions/16704290/how-to-return-rows-that-have-the-same-column-values-in-mysql by cc-by-sa and MIT license