>

단일 열 fieldValue 및 fieldID에 아래 구조의 모든 필드 데이터를 저장하는 데이터베이스가 있습니다. 이 유형의 구조에 대해 어디서 어떤 조건에서 2 개의 필터를 사용할 수 있는지 알고 싶습니다.

예를 들어 High와 동일한 모든 fieldID2와 불일치 인 모든 fieldID11을 쿼리하는 방법

데이터베이스는 mysql입니다.

출력은 아래와 같으며 출력은 피벗 테이블과 같습니다. 쓰기 쿼리에 아무런 문제가 없으므로 두 열에 대해 둘 이상의 위치 조건을 갖는 방법을 알고 싶습니다.

fieldid1     fieldid2     fieldid3     fieldid4
ahmed         high        xxxxxssss    Finance


  • 답변 # 1

    당신이 정확히 무엇을 요구하는지 잘 모르겠습니다. 어쨌든 키/값 테이블은 일반적으로 집계에 의해 쿼리됩니다. 따라서 InternalNo에 따라 FieldID 2의 값이 'High'이고 FieldID 11의 값이 'Discrepancy'인 경우 FieldID 1, 2, 3 및 4의 값을 표시하려면 다음을 수행하십시오.

    select
      internalno, 
      any_value(case when fieldid = 1 then fieldvalue end) as fieldvalue1,
      any_value(case when fieldid = 2 then fieldvalue end) as fieldvalue2,
      any_value(case when fieldid = 3 then fieldvalue end) as fieldvalue3,
      any_value(case when fieldid = 4 then fieldvalue end) as fieldvalue4
    from keyvalues
    group by internalno
    having any_value(case when fieldid = 2 then fieldvalue end) = 'High'
       and any_value(case when fieldid = 11 then fieldvalue end) = 'Discrepancy';
    
    

    이 속도를 높이기 위해 WHERE 를 적용 할 수 있습니다  원하는 FieldID에 대한 절;

    where fieldid in (1,2,3,4,11)
    
    

    InternalNo 89796에 대한 FieldID 10과 같은 하나의 속성에 대한 여러 값과 관련하여 가져올 값과 ANY_VALUE 를 결정해야합니다.  충분하지 않을 수도 있습니다.

관련 자료

  • 이전 csv - * txt 출력 파일에서 R로 데이터 추출
  • 다음 R로 저장된 데이터 인코딩 (Windows-Linux 이식성)