my sql 에서 left join 을 사용 하여 where 조건 을 추가 하 는 문제 분석

1779 단어 mysqlleftjoinwhere
현재 필요:
group 과 factor 두 장의 표 가 있 습 니 다.한 group 은 여러 개의 factor 에 대응 합 니 다.현재 효과 적 인 group 과 대응 하 는 효과 적 인 factor 를 조회 하고 싶 습 니 다.두 표 모두 isDel 논리 삭제 표지 가 있 습 니 다.
在这里插入图片描述
첫 번 째 오류 쓰기 1:

SELECT g.*,f.* FROM groups g LEFT JOIN factor f ON f.groupId = g.id where g.isDel=0 and f.isDel=0
LEFT JOIN 키 워드 는 왼쪽 표(tablename 1)오른쪽 표(table)에서 도 모든 줄 을 되 돌려 줍 니 다.name 2)에 일치 하 는 줄 이 없습니다.
위 에 이렇게 왼쪽 표 가 오른쪽 표 에 대응 하 는 데이터 가 없 으 면 조회 할 수 없 는 이 유 는 바로f.isDel=0이 코드 문제 입 니 다.
오류 쓰기 2:

SELECT g.*,f.* FROM groups g LEFT JOIN factor f ON f.groupId = g.id and g.isDel=0 and f.isDel=0
이런 표기 법 은 4.567914.효력 이 발생 하지 않 아 조회 데이터 가 전혀 맞지 않 는 다.
원인 분석:
left join 에서 where 와 on 조건 에 대한 몇 가지 지식:
4
  • 다 중 표 left join 은 임시 표를 만 들 고 사용자 에 게 되 돌려 줍 니 다
  • where 조건 은 마지막 에 생 성 된 이 임시 표를 여과 하고 where 조건 에 부합 되 지 않 는 기록 을 걸 러 내 는 것 이다
  • on 조건 은 left join 의 오른쪽 표 에 조건 을 걸 러 내 는 것 이지 만 왼쪽 표 의 모든 줄 을 되 돌려 줍 니 다.오른쪽 표 에 없 는 보충 은 NULL 입 니 다
  • 4.567917.on 조건 에서 왼쪽 표 에 대한 제한 조건 이 있 으 면 조건 이 진짜 든 가짜 든 왼쪽 표 의 모든 줄 로 돌아 가지 만 오른쪽 표 의 일치 치 에 영향 을 줄 수 있다.즉,on 중 왼쪽 표 의 제한 조건 은 오른쪽 표 의 일치 내용 에 만 영향 을 주 고 반환 줄 수 에 영향 을 주지 않 는 다올 바른 표기 법:
    
    SELECT g.*,f.* FROM groups g LEFT JOIN factor f ON f.groupId = g.id and f.isDel=0 where g.isDel=0
    결론:
    1.왼쪽 표 에 조건 제한 을 추가 하려 면 where 조건 에 추가 해 야 하 며,on 뒤에 두 면 안 됩 니 다.
    2.오른쪽 표 에 조건 제한 을 on 뒤에 두 고 where 조건 에 추가 하면 데이터 줄 의 차이 에 문제 가 생 길 수 있 습 니 다.
    my sql 에서 left join 을 사용 하여 where 조건 을 추가 하 는 문제 분석 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 my sql left join 에 where 내용 을 추가 하 였 습 니 다.예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기