조인의 여러 행에 SQL 조건을 구현하는 방법
제시된 문제는 조인에서 두 개의 특정 태그를 소유한 사용자를 선택하는 것과 관련이 있습니다. 작업. IN을 사용하여 제공된 예는 두 태그 중 하나를 가진 사용자를 반환하지만 원하는 결과는 두 태그를 모두 소유한 사용자를 검색하는 것입니다. 이를 위해 ALL 키워드를 활용하는 것은 부적절합니다.
해결책
1. 다양한 행 테스트
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')
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')
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'
2. 행 집계
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
(MySQL Specific) 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!