문제: 일치하는 레코드를 검색하기 위해 JOIN의 여러 행에 조건을 적용합니다.
목표: 두 가지를 모두 갖춘 사용자 선택 'tag1' 및 'tag2' 태그.
이 문제를 해결하는 데는 두 가지 주요 접근 방식이 있습니다.
A. 있음:
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')
B. 하위 쿼리:
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')
C. 조인:
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'
A. 개수:
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
B. 문자열 처리:
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
위 내용은 JOIN을 사용하여 SQL에서 'tag1'과 'tag2'가 모두 있는 사용자를 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!