개발 과정에서 여러 쿼리 결과를 직접 표시하는 경우가 많습니다. 그렇다면 어떻게 쿼리해야 할까요? 이번 글은 SQL의 UNION 키워드와 사용법에 대해 알아보겠습니다.
SQL의 UNION 키워드는 여러 쿼리 조건의 결과를 표시합니다.
UNION의 중국어 의미는 합집합, 즉 둘 이상의 SELECT 문의 결과를 병합하는 것입니다. 사용 팁은 다음과 같습니다.
아래와 같이 앞 장에서 소개한 데이터를 데모 데이터로 사용
테이블을 별도로 생성합니다s_user
和表s_user_1
CREATE TABLE `s_user` ( `userid` int(11) NOT NULL AUTO_INCREMENT, `user_name` varchar(255) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, `pass_word` varchar(255) DEFAULT NULL, `salt` varchar(255) DEFAULT NULL, `state` varchar(255) DEFAULT NULL, `create_time` datetime DEFAULT NULL, PRIMARY KEY (`userid`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
테스트 데이터는 다음과 같습니다.
INSERT INTO `test`.`s_user`(`userid`, `user_name`, `name`, `pass_word`, `salt`, `state`, `create_time`) VALUES (1, '小米', '小米', '123123', '123', '1', '2022-02-10 19:48:43'); INSERT INTO `test`.`s_user`(`userid`, `user_name`, `name`, `pass_word`, `salt`, `state`, `create_time`) VALUES (2, '小白', '小白', '123123', '123', '1', '2022-02-10 19:48:43'); INSERT INTO `test`.`s_user_1`(`userid`, `user_name`, `name`, `pass_word`, `salt`, `state`, `create_time`) VALUES (1, '小红', '小红', '123123', '123', '1', '2022-02-10 19:48:43'); INSERT INTO `test`.`s_user_1`(`userid`, `user_name`, `name`, `pass_word`, `salt`, `state`, `create_time`) VALUES (2, '小黄', '小黄', '123123', '123', '1', '2022-02-10 19:48:43');
모든 SELECT 문 UNION 내부에는 동일한 개수의 컬럼이 있어야 합니다. 모든 컬럼을 쿼리하려면 먼저 동일한 컬럼으로 SQL
SELECT * FROM `s_user` UNION SELECT * FROM `s_user_1`
을 쿼리해야 합니다. 실행 결과는 다음과 같습니다.
첫 번째 쿼리가 모든 열에 대한 것이고 두 번째 쿼리가 세 개의 필드에 대한 것이라면 쿼리 결과는 무엇입니까? 이제 다음 SQL을 실행해 보세요. 메시지: 서로 다른 개수의 열을 쿼리하는 데 사용되는 SELECT 문입니다.
올바른 사용법
SELECT * FROM `s_user` UNION SELECT userid,name,pass_word FROM `s_user_1`
위에서 여러 쿼리의 열 개수는 동일해야 하며, 그 다음에는 열 개수가 동일해야 함을 확인했습니다. queried 동일한 쿼리 필드의 데이터 타입이 다른 경우 정상적으로 처리가 가능한가요? 다음으로 s_user 쿼리의 pass_word를 create_time으로 바꿔 쿼리합니다. 문의 후 보실 수 있습니다. SQL 쿼리에서 열의 데이터 유형은 관련이 없습니다. 물론 실제 비즈니스에서는 서로 다른 유형으로 설정되지는 않습니다.
SELECT userid,name,pass_word FROM `s_user` UNION SELECT userid,name,pass_word FROM `s_user_1`
열 순서
UNION 키워드를 사용하여 쿼리할 때 열의 순서와 관련이 있나요? 위에서 본 것처럼 열의 순서와 관련이 있을 수도 있고, 관련이 없을 수도 있는데, 그럼 테스트해 보겠습니다. 실행 결과는 컬럼의 순서와 아무런 관련이 없음을 알 수 있습니다. 실제 비즈니스에서는 여러 쿼리가 결합되므로 프로젝트에서 정의하는 열의 순서가 일관되어야 합니다.
SELECT userid,name,create_time FROM `s_user` UNION SELECT pass_word,name,userid FROM `s_user_1`
UNION과 UNION ALL의 차이점
UNION과 UNION ALL의 차이점을 테스트하려면 s_user_1 데이터 테이블에 [Xiaobai]를 추가해야 하고, s_user 테이블에 [Xiaobai]가 모두 존재해야 합니다. 데이터베이스에 저장하면 두 사람의 결과는 완전히 달라집니다.
SELECT create_time,userid,name FROM `s_user` UNION SELECT pass_word,name,userid FROM `s_user_1`
먼저 실행:
INSERT INTO `test`.`s_user_1`(`userid`, `user_name`, `name`, `pass_word`, `salt`, `state`, `create_time`) VALUES (3, '小白', '小白', '123123', '123', '1', '2022-02-10 19:48:43');
실행 결과:
다시 실행
SELECT user_name,name,pass_word,salt FROM `s_user` UNION SELECT user_name,name,pass_word,salt FROM `s_user_1`
실행 결과:
UNION 연관 항목이 제거된 것을 볼 수 있으며, UNION ALL 쿼리가 표시됩니다. 모든 값, 중복 항목은 제거되지 않았습니다.
결론
이상은 SQL에서의 UNION 키워드 사용법입니다. 읽어주셔서 감사합니다. 도움이 되셨다면 좋아요와 저장 부탁드립니다. 부족한 점 있으면 댓글 달아주시고 수정해주세요. 다음에 또 만나요. 추천 학습:mysql 비디오 튜토리얼
위 내용은 SQL 입문 학습: UNION 키워드 사용법에 대한 간략한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!