MySQL 연결 표 조회 기본 작업 의 left-join 흔 한 구덩이
중 소 규모 의 프로젝트 에 있어 서 연결 표 조 회 는 더 이상 흔히 볼 수 없 는 조작 이다.특히 보고 서 를 작성 할 때.그런데 데 이 터 를 교정 할 때 구 덩이 를 발 견 했 습 니까?이 글 은 my sql 에서 자주 사용 하 는 연결 표 조회 에 대해 흔히 볼 수 있 는 구 덩이 를 복원 합 니 다.
기초 환경
건표문
DROP TABLE IF EXISTS `role`;
CREATE TABLE `role` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`role_name` VARCHAR(50) DEFAULT NULL COMMENT ' ',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=' ';
insert into `role` VALUES(1, ' ');
insert into `role` VALUES(2, ' ');
insert into `role` VALUES(3, ' ');
insert into `role` VALUES(4, ' ');
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`role_id` int(11) NOT NULL COMMENT ' id',
`user_name` VARCHAR(50) DEFAULT NULL COMMENT ' ',
`sex` int(1) DEFAULT 0 COMMENT ' ',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=' ';
insert into `user` VALUES(1, 1, 'admin', 1);
insert into `user` VALUES(2, 2, ' ', 1);
insert into `user` VALUES(3, 2, ' ', 2);
insert into `user` VALUES(4, 2, ' ', 2);
insert into `user` VALUES(5, 3, ' ', 1);
insert into `user` VALUES(6, 3, ' ', 1);
insert into `user` VALUES(7, 3, ' ', 2);
insert into `user` VALUES(8, 3, ' ', 1);
insert into `user` VALUES(9, 4, ' ', 2);
insert into `user` VALUES(10, 4, ' ', 2);
insert into `user` VALUES(11, 4, ' ', 1);
데 이 터 는 아래 와 같다.
mysql> select * from role;
+----+-----------+
| id | role_name |
+----+-----------+
| 1 | |
| 2 | |
| 3 | |
| 4 | |
+----+-----------+
4 rows in set (0.00 sec)
mysql> select * from user;
+----+---------+-----------+------+
| id | role_id | user_name | sex |
+----+---------+-----------+------+
| 1 | 1 | admin | 1 |
| 2 | 2 | | 1 |
| 3 | 2 | | 2 |
| 4 | 2 | | 2 |
| 5 | 3 | | 1 |
| 6 | 3 | | 1 |
| 7 | 3 | | 2 |
| 8 | 3 | | 1 |
| 9 | 4 | | 2 |
| 10 | 4 | | 2 |
| 11 | 4 | | 1 |
+----+---------+-----------+------+
11 rows in set (0.00 sec)
기본 업무단순 정보 보고서:사용자 정보 조회
mysql> SELECT
-> id,
-> user_name AS ' ',
-> ( CASE WHEN sex = 1 THEN ' ' WHEN sex = 2 THEN ' ' ELSE ' ' END ) AS ' '
-> FROM
-> USER;
+----+-----------+--------+
| id | | |
+----+-----------+--------+
| 1 | admin | |
| 2 | | |
| 3 | | |
| 4 | | |
| 5 | | |
| 6 | | |
| 7 | | |
| 8 | | |
| 9 | | |
| 10 | | |
| 11 | | |
+----+-----------+--------+
각 캐릭터 명 및 대응 인원 중 여성 수 조회
mysql> SELECT
-> r.id,
-> r.role_name AS role,
-> count( u.sex ) AS sex
-> FROM
-> role r
-> LEFT JOIN USER u ON r.id = u.role_id
-> AND u.sex = 2
-> GROUP BY
-> r.role_name
-> ORDER BY
-> r.id ASC;
+----+-----------+-----+
| id | role | sex |
+----+-----------+-----+
| 1 | | 0 |
| 2 | | 2 |
| 3 | | 1 |
| 4 | | 2 |
+----+-----------+-----+
4 rows in set (0.00 sec)
만약 우리 가 성별 여과 조건 을 where 작업 결과 로 바꾼다 면 어떻게 될까요?
mysql> SELECT
-> r.id,
-> r.role_name AS role,
-> count( u.sex ) AS sex
-> FROM
-> role r
-> LEFT JOIN USER u ON r.id = u.role_id
-> WHERE
-> u.sex = 2
-> GROUP BY
-> r.role_name
-> ORDER BY
-> r.id ASC;
+----+-----------+-----+
| id | role | sex |
+----+-----------+-----+
| 2 | | 2 |
| 3 | | 1 |
| 4 | | 2 |
+----+-----------+-----+
3 rows in set (0.00 sec)
여기 서 캐릭터 데이터 가 완전 하지 않 은 것 을 볼 수 있다.사장 역할 을 맡 은 직원 수 를 찾아내다.
mysql> SELECT
-> r.id,
-> r.role_name AS role,
-> count( u.sex ) AS sex
-> FROM
-> role r
-> LEFT JOIN USER u ON r.id = u.role_id
-> WHERE
-> r.role_name = ' '
-> GROUP BY
-> r.role_name
-> ORDER BY
-> r.id ASC;
+----+-----------+-----+
| id | role | sex |
+----+-----------+-----+
| 2 | | 3 |
+----+-----------+-----+
1 row in set (0.00 sec)
마찬가지 로 필터 조건 을 where 에서 on 으로 변경 합 니 다.
mysql> SELECT
-> r.id,
-> r.role_name AS role,
-> count( u.sex ) AS sex
-> FROM
-> role r
-> LEFT JOIN USER u ON r.id = u.role_id
-> AND r.role_name = ' '
-> GROUP BY
-> r.role_name
-> ORDER BY
-> r.id ASC;
+----+-----------+-----+
| id | role | sex |
+----+-----------+-----+
| 1 | | 0 |
| 2 | | 3 |
| 3 | | 0 |
| 4 | | 0 |
+----+-----------+-----+
4 rows in set (0.00 sec)
여기 서 데이터 가 남아 도 는 것 을 볼 수 있다.총결산
left join 구문 에서 왼쪽 표 필 터 는 where 조건 에 넣 어야 합 니 다.오른쪽 표 필 터 는 on 조건 에 넣 어야 합 니 다.그래 야 결과 가 많 지 않 고 적당 합 니 다.
MySQL 연결 표 조회 기본 작업 의 left-join 흔 한 구덩이 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 MySQL 연결 표 조회 left-join 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 지원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
🏃♀️[프로그래머스] 징검다리 건너기문제 설명 [본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.] 카카오 초등학교의 "니니즈 친구들"이 "라이언" 선생님과 함께 가을 소풍을 가는 중에 징검다리가 있는 개울을 만나서 건너편으로 건너려고 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.