복붙노트

[SQL] 이 두 합류 테이블 접근 방식의 차이?

SQL

이 두 합류 테이블 접근 방식의 차이?

우리는 두 개의 테이블, 사용자 및 게시물을 고려하십시오. USER_ID는 게시물 테이블의 외래 키와 사용자 테이블의 기본 키입니다.

무엇이이 두 SQL 쿼리의 차이점은 무엇입니까?

select user.name, post.title 
  from users as user, posts as post 
 where post.user_id = user.user_id;

select user.name, post.title 
  from users as user join posts as post using user_id;

해결법

  1. ==============================

    1.구문 이외에, 작은 조각을 위해, 그들은 정확히 같은 작동합니다. 가능한 모든의 경우에, 항상 ANSI가 조인 사용하여 새 쿼리를 작성.

    구문 이외에, 작은 조각을 위해, 그들은 정확히 같은 작동합니다. 가능한 모든의 경우에, 항상 ANSI가 조인 사용하여 새 쿼리를 작성.

    의미에 관해서는, 콤마 표기 4 개, 6 레코드 두 테이블은 각각 ​​24 개 레코드를 생성하므로 수단은 표 B의 모든 레코드 테이블 A에서 모든 레코드의 행렬을 생성 두 테이블 사이 CARTESIAN 제품을 생산하는데 사용된다. WHERE 절을 사용하면 다음이 직교 제품에서 당신이 실제로 원하는 행을 선택할 수 있습니다. 그러나 MySQL은 실제로 통해 따라이 거대한 행렬을 만들지 만, 의미 이것은 무엇을 의미하지 않습니다.

    A는 구문이 더 명확하게 상호 작용하는 방법을 테이블을 정의하는 ANSI 표준입니다 가입. 조인 옆의 ON 절을 둬서, 그것은 함께 두 테이블을 연결하는 것을 취소한다.

    기능적으로, 그들은 당신의 두 쿼리에 대해 동일한을 수행합니다. 차이점은 다른 [외부] 유형을 가입하여 시작할 때 제공됩니다.

    MySQL을 위해 특별히 쉼표로 표기 한 차이를 가지고있다

    그러나,이 차이에 은행에 현명하지 않을 것입니다.

  2. ==============================

    2.

    where post.user_id = user.user_id
    

    당신이 조건문을 여기에

    from users as user join posts as post using user_id
    

    당신이 외래 키를 사용하여 두 개의 테이블을 조인 여기에

    마지막에는 단지 동일하지만 더 나은 고급 쿼리에 사용되는 JOIN ...

  3. ==============================

    3.MySQL의 크로스는 모두 동일 내부 조인, 가입 및 가입, 구문 가입하세요. 쉼표로 구분 테이블리스트는 가입이있다.

    MySQL의 크로스는 모두 동일 내부 조인, 가입 및 가입, 구문 가입하세요. 쉼표로 구분 테이블리스트는 가입이있다.

  4. ==============================

    4.페이지 https://dev.mysql.com/doc/refman/5.5/en/join.html의 MySQL의 매뉴얼은 두 가지 접근 방식의 차이에 대해이 점을합니다 :

    페이지 https://dev.mysql.com/doc/refman/5.5/en/join.html의 MySQL의 매뉴얼은 두 가지 접근 방식의 차이에 대해이 점을합니다 :

  5. from https://stackoverflow.com/questions/5294311/difference-between-these-two-joining-table-approaches by cc-by-sa and MIT license