MS SQL 쿼리 질문입니다.

  • #3564131
    SQL query 128.***.96.51 794

    안녕하세요 여기 컴싸전공들이 많으신거같아서 질문합니다. 기본적인 SQL문 쓰고있는데 구글링해도 적절한 답을 못찾겠네요.

    SELECT * 
    FROM   abcde  AS r
    LEFT JOIN   fghij    AS d
    ON  d.id = r.user_id

    SELECT * 
    FROM   abcde  AS r
    LEFT JOIN   fghij    AS d
    ON  r.user_id = d.id

    예를 들어서 2개의 테이블이 있다고 가정해보겠습니다.

    질문 1) LEFT JOIN 을 할경우 ON statement의 변수 위치를 바꾸고 진행해본결과 결과값이 다르게 나오는데 원래 그런건가요?
    당연히 같은 결과라고 생각했는데.

    질문 2) 위의 예시의 경우 LEFT JOIN이므로 결과값의 수가 최소한 abcde 테이블과 같은수거나 많이 나와야 되지 않나요?
    만약 abcde 테이블 보다 결과값이 적은경우 잘못된 거죠?

    컴퓨터 잘하시는 분들이 많아서 여기다 질문 올려봅니다. 답변 해주시면 감사합니다!

    • ㅁㅇㅎ 45.***.247.219

      1. 아니요 당연히 같아야됩니다
      2. Leftjoin 시 결과값이 abcd테이블 로우 수랑 같아야지 장상입니다

    • cs 173.***.70.3

      다를리가 없죠

      테이블 순서를 바꾸었거나 조인 타입을 바꾸지 않는 이상

    • 음홧 216.***.233.146

      설마 where문 추가해서 넣고 결과 달라지는거 얘기하는건 아니겠지…
      where 문 추가되면 결과가 원글처럼 나오는 경우도 있음

    • msif 72.***.109.34

      당연히 같아야해요.

      From d table
      Left join r table
      하시면 달라집니다 where절의 key 순서는 상관 없어요. d.id = r.userid 나 r.userid = d.id 는 같은 결과를 줘야하죠.