>source

다음 SQL 문을 어떻게 향상시킬 수 있습니까? EXCEPT를 사용해 보았지만 작동하지 않습니다. 어떤 제안이나 조언도 환영합니다!

SELECT COUNT(*)
FROM ( SELECT L_ORDERKEY, COUNT(*)
   FROM LINEITEM
   GROUP BY L_ORDERKEY
   HAVING COUNT(*) > (SELECT DISTINCT TSIZE
                      FROM LINEITEM) );

SELECT LINEITEM.L_ORDERKEY, LINEITEM.L_LINENUMBER
FROM LINEITEM JOIN PART
   ON LINEITEM.L_PARTKEY = PART.P_PARTKEY
WHERE PART.P_PARTKEY IN (46557,20193,19110,45690,45123)
   MINUS
      (SELECT LINEITEM.L_ORDERKEY, LINEITEM.L_LINENUMBER
       FROM LINEITEM JOIN PART
          ON LINEITEM.L_PARTKEY = PART.P_PARTKEY
       WHERE PART.P_PARTKEY IN (46557,20193,19110,45690,45123)
       MINUS
       SELECT LINEITEM.L_ORDERKEY, LINEITEM.L_LINENUMBER
       FROM LINEITEM JOIN SUPPLIER
          ON LINEITEM.L_SUPPKEY = SUPPLIER.S_SUPPKEY
       WHERE SUPPLIER.S_SUPPKEY IN (4567,2323,1987,2194,1111)
      );

  • 답변 # 1

    not exists 를 사용할 수 있습니다  두 번째 검색어

      SELECT L.L_ORDERKEY, L.L_LINENUMBER
         FROM LINEITEM L
         JOIN PART P
           ON L.L_PARTKEY = P.P_PARTKEY
        WHERE P.P_PARTKEY IN (46557, 20193, 19110, 45690, 45123)
          AND NOT EXISTS
             (SELECT 0
                FROM SUPPLIER S
               WHERE S.S_SUPPKEY IN (4567, 2323, 1987, 2194, 1111)
                 AND L.L_SUPPKEY = S.S_SUPPKEY );
    
    

관련 자료

  • 이전 c# - AspNetCore 30 미리보기에서 참조 유형을 JSON으로 어떻게 반환합니까?
  • 다음 python - 노트북 위젯 내에서 ScrolledText에서 텍스트 가져 오기