ql 복잡한 플러그인 조회

3383 단어 sql
최근에 각종 작은 응용을 하면서 MYSQL을 사용했고 때로는 비교적 복잡한 플러그인 조회를 사용해서 SQL을 통해 이를 어떻게 실현하는지 연구하고 있다.다음 표(stu)에서 학생들의 기본 정보를 설명합니다.
id
name
grade
1
Jim
7
2
Tom
8
3
Cake
9



또 다른 표(sco)는 학생들의 성적 정보를 묘사한다.
stu_id
subject
score
1
math
78
2
math
83
3
physics
90



지금 7학년 학생들의 수학 성적을 조회하고 싶다면, sql문장은 이렇게 써야 한다.
select * from stu left join sco on stu.id = sco.stu_id where stu.grade = 7 
and sco.subject = "math";

두 개의 시계는 모두 필터 조건이 있다. 블로거가 실제 응용 장면에서 두 개의 시계는 훨씬 복잡하고 필터 조건도 많다. 그래서 먼저 두 개의 시계를 선택한 다음에 Join을 만들 수 있는 방법이 없을까 생각했다.성능상 먼저 여과하는 것도 후속join의 과정에 유리하다.물론 데이터베이스는 이런 것들에 대해 상응하는 최적화가 있을 것이다.우리는 여전히 기본적인 문제로 돌아왔다. 두 개의 조회는 어떻게 Join을 진행합니까?
select * from 
    (select * from stu where grade = 7) s
left join 
    (select * from sco where subject = "math") t
on s.id = t.stu_id;

위의 예에서 두 개의 하위 쿼리의 쓰기를 주의하십시오. 쿼리 문장은 묶어서 한 표의 임시 이름과 바짝 뒤따릅니다.다시 복잡한 예를 들어 mysql은 전체 외부 연결을 지원하지 않는다는 것을 알고 있습니다. 위의 표에 전체 외부 연결을 하려면 어떻게 해야 합니까?사고방식도 간단하다. 먼저 왼쪽 바깥으로 연결하고 다시 오른쪽 바깥으로 연결하고 마지막에 합친다.
select * from 
    (select * from stu where grade = 7) s
left join 
    (select * from sco where subject = "math") t
on s.id = t.stu_id
union
select * from 
    (select * from stu where grade = 7) s
right join 
    (select * from sco where subject = "math") t
on s.id = t.stu_id

단지 문장으로만 보기에는 좀 복잡하다.사실상, sql 기능이 강하여 많은 복잡한 업무의 조회를 실현할 수 있다.실제 장면에서는 사실 이런 상황을 만나기 쉽다.

좋은 웹페이지 즐겨찾기