기본 키인 UserId
열이 하나만있는 테이블 Users
이 있다고 가정합니다.이 MySQL 쿼리를 작성하는 방법은 무엇입니까?
두 번째 테이블 Events
에는 EventId
, UserId
및 Status
의 세 열이 있습니다. A Status
은 BOOL NOT NULL
입니다. UserId
은 색인되지만 고유하지는 않습니다.
테이블 Status
에는 에 외래 키 제약 UserId
이 있습니다.
이제는 Event.Status = TRUE
과 같은 Events
에 행이없는 모든 UserId
을 쿼리하려고합니다. JOIN
으로이 작업을 수행 할 수 있습니까?
Users
--------
1
2
3
Events
--------
EventId UserId Status
1 1 FALSE
2 1 TRUE
3 2 FALSE
4 2 FALSE
그럼 내가 찾고 쿼리가 반환해야합니다 : 예를 들어
(하나의 명령문은 선호)
UserId
-------
2
3
감사합니다! 이 같은
왼쪽 결합이 더 좋은 옵션 인 것 같습니다. 첫 번째 옵션은 성능에 영향을 줄 수있는 DISTINCT를 사용합니다. http://sackoverflow.com/questions/521055/in-sql-how-does-using-distinct-affect-performance – isobar
@isobar : 좋은 지적, 참조 된 문서는 DISTINCT를 사용하지 않으며 성능 특성이 달라집니다. 거기에. –
고마워! 당신들은 멋진데! =) 사실, 다행히도 실제 시나리오에서 테이블은 UserId 당 하나의 TRUE 만 가질 것입니다. – javic