>source

이것이 내 마음을 감싸지 못하는 것 같습니다. 가능한 한 단순화하기 위해 테이블이 있다고 가정 해 봅시다.

Id      cid         Account
1       4010        Bank Co
2       5323        Webazon
3       3513        Internal
4       3513        PhoneCo
5       5597        Internal

같은 cid를 가진 고객이있는 Account = 'Internal'행을 제외한 모든 결과를 반환하고 싶습니다. 따라서이 경우 1,2,4, 5 행을 반환합니다. 'PhoneCo'및 'Internal'공유 cid 3513이므로 3 행은 반환되지 않습니다. 그러나 다른 레코드가 없으므로 5 행은 반환됩니다. cid 5597을 공유합니다.

첫 번째 부분은 모든 '내부'레코드를 제거하는 두 번째 부분은 UNION으로 진행하는 길을 가고 있습니다. 두 번째 부분은 내가 관심있는 것입니다. 잘못된 길입니다.


  • 답변 # 1

    한 가지 방법이 있습니다 :

    select t.*
    from t
    where t.account <> 'Internal' or
          not exists (select 1
                      from t t2
                      where t2.cid = t.cid and t2.account <> 'Internal'
                     );
    
    

    즉, 모든 비 내부 레코드를 모두 선택하십시오. 내부 계정이 아닌 해당 계정이없는 내부 계정에 대한 레코드를 선택하십시오.

  • 이전 dialogflow fulfillment - 웹 후크를 통해 대화 상자 흐름에서 비공개 URL을 사용할 수 있는지 여부
  • 다음 apache zeppelin - SQL에서 다른 조합 순위