본문 바로가기
MySql

MySQL SQL 조인, 테이블 b에 일치하지 않는 테이블 a의 행 포함

by 베이스 공부 2021. 1. 10.
반응형
SELECT orders.* FROM orders JOIN order_rows 
  ON orders.id = order_rows.order_id 
  WHERE order_rows.quant <> order_rows.quant_fulfilled 
  GROUP BY orders.id 
  ORDER BY orders.id DESC

해당 order_row 항목이없는 행 (아직 항목이없는 주문)을 포함하려면이 항목이 필요합니다. ON 또는 WHERE 절에 추가하여이를 수행하는 방법이 있어야하는 것 같습니다.

주어진 시간에 몇 개의 빈 주문 만있을 것이므로 이에 대한 최선의 답변이 성능을 크게 저하시키는 경우 별도의 쿼리를 사용합니다. 그러나 나머지와 함께 orders.id별로 정렬되도록이 쿼리에 포함시키고 싶었습니다. 항목이없는 1-3 개의 주문을 포함하기 위해 쿼리 시간을 두 배로 늘리고 싶지는 않습니다.

MySQL을 사용하고 있습니다. 조언에 미리 감사드립니다.

 

해결 방법

 

JOIN 대신 LEFT JOIN 을 사용하면됩니다. 모든 주문 행을 얻을 수 있습니다.

SELECT orders.* FROM orders LEFT JOIN order_rows 
  ON orders.id = order_rows.order_id 
  WHERE order_rows.quant IS NULL OR order_rows.quant <> order_rows.quant_fulfilled 
  GROUP BY orders.id 
  ORDER BY orders.id DESC

 

참조 페이지 https://stackoverflow.com/questions/15124705

 

 

반응형

댓글