사람이 포함 된 MySQL 테이블이 있습니다. 그 사람들에게는 하나 이상의 사람 유형이 지정됩니다. 사람들 유형은 다른 MySQL 테이블에 저장되어 있으며 조인을 사용하여 데이터를 연결합니다.MySQL 특정 값을 포함해야하는 테이블 결합
내가 원하는 것은 특정 유형의 사람들을 선택하는 것입니다.
다음 예에서는 사람 유형이 1234
이고 4321
인 사람을 선택하고 싶습니다. 그들은 다른 사람들 유형에도있을 수 있지만 적어도 내가 지정한 두 가지에 있어야합니다.
내 쿼리를 시도했지만 아무 것도 반환하지 않습니다.
SELECT p.person_id
FROM people AS p
INNER JOIN people_types AS pt ON pt.person_id = p.person_id AND pt.type_id IN ('1234') AND pt.type_id IN ('4321')
이렇게 할 수있는 특정 기능이 있습니까? 봤는데
EDIT 두 번 테이블에 가입하는 것이 좋습니다. 그러나 이것은 비효율적 인 것처럼 보인다. 대신 LEFT JOIN
을 사용하면 유연성이 향상됩니까?
SELECT p.person_id
FROM people AS p
LEFT JOIN people_types AS pt ON pt.person_id = p.person_id
WHERE pt.type_id IN ('1234') AND pt.type_id IN ('4321'
난 당신이 두 번 같은 테이블에 가입해야합니다 생각합니다. – AK47
좌측 조인을 사용하고 몇개의 해답에서 제안 된 IN 절과 같은 조건에서 ID를 유지합니다. 조건은 항상 거짓입니다. 하나의 행은 하나의 유형에만 속할 것입니다. AND in 어디에서 두 값에 대해 한 행의 type_id 열을 검사합니다.이 값은 항상 false입니다. – AK47