>  기사  >  데이터 베이스  >  mysql에서 내부 조인과 왼쪽 조인을 사용하는 방법

mysql에서 내부 조인과 왼쪽 조인을 사용하는 방법

WBOY
WBOY앞으로
2023-06-01 19:37:25964검색

차이

반환이 다릅니다
1. 내부 조인은 두 테이블의 동일한 조인 필드가 있는 행만 반환합니다.
2 왼쪽 조인 수는 왼쪽 테이블과 오른쪽 테이블의 레코드 수보다 작거나 같습니다.

다른 숫자
1. 내부 조인은 왼쪽 테이블의 모든 레코드와 오른쪽 테이블의 조인 필드와 동일한 레코드를 반환합니다.
2. 왼쪽 테이블의 레코드 수와 동일합니다.

레코드 속성이 다릅니다.
1. 내부 조인에 부족한 레코드 속성은 바로 삭제됩니다. . 왼쪽 조인에 부족한 레코드 속성은 NULL로 채워집니다.

inner 조인 시나리오

두 개의 테이블 디자인:

  • 채널 채널 테이블: 채널 ID, 채널 이름 등

  • 모듈 모듈 테이블: 모듈 ID, 모듈 이름, 채널 ID.

페이지에 채널이 표시되는 경우 새 채널이 있을 수 있지만 이때는 내부 조인을 사용할 수 없으며, 그렇지 않으면 새로 추가된 모듈을 쿼리할 수 없으므로 왼쪽 조인을 사용하세요

 select channel.* from  channel left join modules on channel.id = modules.channel_id
 where page_id=1
 group by channel.id order by channel.new_sort asc , channel.id desc

1. 페이지 유형에서는 어떤 페이지 유형을 구별하기 위해 채널 테이블에 정의됩니다. 2. 채널 ID에는 연결할 모듈이 여러 개 있을 수 있으므로 채널 ID에 따라 그룹화해야 합니다. 또한, 채널 정렬 표시를 설정하려면 먼저 생성된 채널이 먼저 표시되어야 합니다.


다음의 경우 새로 생성된 채널은 표시되지 않으며, 모듈이 없는 채널도 표시되지 않습니다.

select channel.*  from channel inner join modules on channel.id=modules.channel_id
where page_id=1 group by channel.id order by channel.new_sort asc , channel.id desc

마지막으로: 채널 관련 정보만 표시하고 관련 모듈 정보를 사용하지 않는 채널이므로 이것이 요구 사항을 충족할 수 있다고 생각합니다. 나중에 문제 발견하면 업데이트할게요

 select channel.* from  channel
 where page_id=1 order by channel.new_sort asc , channel.id desc

음~ 추가로 질문드리자면, 위에 남은 문제는 페이지에서 모듈의 ID를 조회해야 해서 관련이 있는 문제입니다.

이전에 내부 조인 시나리오를 접한 적이 있는데 나중에 추가하겠습니다~

inner 조인 시나리오

새 정책 테이블policy_lib를 추가한 다음 중간 테이블인channel_policy를 생성하여 채널 채널과policy_lib 간의 연결을 기록합니다. 정책 테이블.

그러면 당연히 SQL은 이렇게 작성됩니다

select policy_lib.id,channel_policy.policy_id,channel_policy.channel_id,channel.id  from policy_lib inner join channel_policy on channel_policy.policy_id=policy_lib.id 
inner join channel on channel.id=channel_policy.channel_id

inner 조인을 사용하면 당연히 결과 쿼리가 비어 있지 않을 것입니다. 왼쪽 조인을 사용하면 테이블에 더티 데이터가 있는 경우 왼쪽과 오른쪽에 데이터가 있습니다. 시공간이므로 처리 중인지 여부를 고려해야 합니다. 가용성은 분명히 불합리합니다.

위 내용은 mysql에서 내부 조인과 왼쪽 조인을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제