> 데이터 베이스 > MySQL 튜토리얼 > SQL 조인에서 여러 행에 조건을 적용하는 방법은 무엇입니까?

SQL 조인에서 여러 행에 조건을 적용하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-24 03:01:23
원래의
513명이 탐색했습니다.

How to Apply Conditions to Multiple Rows in SQL Joins?

SQL을 사용하여 조인의 여러 행에 조건 적용

조인 작업 시 여러 행에 특정 기준을 적용해야 하는 경우가 많습니다. 조인된 테이블에서. 이는 개별 행 테스트 또는 행 집계와 관련된 다양한 기술을 사용하여 달성할 수 있습니다.

EXISTS, 하위 쿼리 및 조인을 사용하여 개별 행 테스트

1A. 있음:

이 방법을 사용하면 특정 조건을 만족하는 행의 존재를 확인할 수 있습니다.

SELECT *
FROM users
WHERE EXISTS (SELECT * FROM tags WHERE user_id = users.id AND name = 'tag1')
AND EXISTS (SELECT * FROM tags WHERE user_id = users.id AND name = 'tag2');
로그인 후 복사

1B. 하위 쿼리:

하위 쿼리를 사용하여 조인된 테이블의 조건에 따라 행을 선택할 수도 있습니다.

SELECT *
FROM users
WHERE id IN (SELECT user_id FROM tags WHERE name = 'tag1')
AND id IN (SELECT user_id FROM tags WHERE name = 'tag2');
로그인 후 복사

1C. JOIN:

INNER JOIN은 여러 행의 조건을 테스트하는 데 사용할 수 있습니다. 하지만 이 방법은 다른 방법에 비해 확장성이 떨어집니다.

SELECT u.*
FROM users u
INNER JOIN tags t1 ON u.id = t1.user_id
INNER JOIN tags t2 ON u.id = t2.user_id
WHERE t1.name = 'tag1' AND t2.name = 'tag2';
로그인 후 복사

COUNT를 이용한 행 집계 및 문자열 처리

2A. 개수:

이 기술은 개수별로 행을 집계하는 데 의존합니다. 동일한 사용자에게 태그를 여러 번 적용할 수 없을 때 효과적입니다.

SELECT users.id, users.user_name
FROM users INNER JOIN tags ON users.id = tags.user_id
WHERE tags.name IN ('tag1', 'tag2')
GROUP BY users.id, users.user_name
HAVING COUNT(*) = 2;
로그인 후 복사

2B. 문자열 처리:

GROUP_CONCAT 및 FIND_IN_SET과 같은 문자열 처리 확장을 제공하는 데이터베이스의 경우 문자열 처리를 사용하여 여러 태그를 확인할 수 있습니다. 하지만 이 방법은 비효율적일 수 있습니다.

SELECT user.id, users.user_name, GROUP_CONCAT(tags.name) AS all_tags
FROM users INNER JOIN tags ON users.id = tags.user_id
GROUP BY users.id, users.user_name
HAVING FIND_IN_SET('tag1', all_tags) > 0 AND FIND_IN_SET('tag2', all_tags) > 0;
로그인 후 복사

위 내용은 SQL 조인에서 여러 행에 조건을 적용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿