TIL | LEFT JOIN 대신 쓸 수 있는 것

flobeeee·2024년 7월 2일
0

Today I Learned

목록 보기
38/40

AI에게 물어봤다.

  1. INNER JOIN
    INNER JOIN은 두 테이블에서 공통된 데이터만 반환합니다.
    LEFT JOIN과 달리 왼쪽 테이블의 데이터 중 오른쪽 테이블과 일치하지 않는 데이터는 제외됩니다.
    예시: SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id;
  2. UNION
    UNION 연산자를 사용하면 두 개 이상의 SELECT 문을 결합할 수 있습니다.
    왼쪽 테이블의 데이터와 오른쪽 테이블의 데이터를 모두 포함할 수 있습니다.
    예시: SELECT FROM table1 WHERE condition UNION SELECT FROM table2 WHERE condition;
  3. CASE 문
    CASE 문을 사용하여 LEFT JOIN과 유사한 결과를 얻을 수 있습니다.
    왼쪽 테이블의 데이터를 기준으로 오른쪽 테이블의 데이터를 가져올 수 있습니다.
    예시: SELECT table1.*, COALESCE(table2.column, 'default_value') AS column_name FROM table1 LEFT JOIN table2 ON table1.id = table2.id;
  4. 서브쿼리(Sub Query)
    서브쿼리를 사용하여 LEFT JOIN과 유사한 결과를 얻을 수 있습니다.
    메인 쿼리에서 서브쿼리를 사용하여 데이터를 가져올 수 있습니다.
    예시: SELECT table1.*, (SELECT column_name FROM table2 WHERE table1.id = table2.id) AS column_name FROM table1;
    이와 같이 LEFT JOIN 대신 다양한 방법을 사용할 수 있습니다. 상황에 따라 적절한 방법을 선택하는 것이 중요합니다. 각 방법의 장단점을 고려하여 최적의 성능을 얻을 수 있는 방법을 선택하는 것이 좋습니다. 🤔

추가로, 데이터베이스 성능 최적화에 대해서도 알아보면 좋습니다. 데이터베이스 인덱스 관리, 쿼리 최적화, 데이터 파티셔닝 등의 기술을 활용하면 데이터베이스 성능을 크게 향상시킬 수 있습니다. 🔍

아하! 서브쿼리를 왜 생각을 못했지..

서브쿼리

바로 LEFT JOIN처럼 짜보기

아래 링크에서 테스트 가능하다.
https://www.w3schools.com/mysql/trymysql.asp?filename=trysql_select_all

고객별로 최근 주문한 날짜를 가져왔다.

SELECT C.*, 
  (SELECT O.OrderDate 
    FROM Orders O 
    WHERE C.CustomerId = O.CustomerId 
    ORDER BY O.OrderDate desc 
    LIMIT 1) AS recentDate 
  FROM Customers C;
profile
기록하는 백엔드 개발자

0개의 댓글