다음 데이터베이스 테이블이 있습니다.선택 방법 MySQL에서 유형 당 최소 2 개의 1 : n 관련 레코드
my_left_table
left_id name
1 A
2 B
3 C
my_right_tabe
right_id thing left_id_fk status
1 D 1 new
2 E 1 new
3 F 2 old
4 G 3 old
5 H 3 new
6 I 3 new
7 J 1 old
8 K 2 old
9 L 2 new
10 M 3 old
11 N 3 old
12 O 1 new
원하는 결과는 다음과 같습니다.
my_left_table
left_id name
3 C
어떻게 권리 기록 AT LEAST 2 status
는 new
이다하고 2 status
는 old
입니다 왼쪽 레코드를 선택 않습니다. 예를 들어, left_id 1은 대상이 아니며, 오른쪽 레코드 중 3 개가 상태가 new이지만 하나의 레코드 만 이전 상태입니다.
지금까지 나는 있습니다.
SELECT *, COUNT(my_right_tabe.left_id_fk) AS count_left_id_fk
FROM my_left_table
INNER JOIN my_right_tabe
ON my_left_table.id = my_right_tabe.left_id_fk
GROUP BY my_right_tabe.left_id_fk
내가 얘기를 깜빡 했네요 한가지 더있다이다. 상태는 새롭고 오래되었지만 동적 인 것 이상입니다. 그 상태 값이 무엇인지 말할 수 없습니다. 어떻게 해결할 수 있을까요? –
그러면 사미어가 다른 답변에서 쓴 내용을 살펴보아야합니다. 그러나 완전히 동적 인 것이 원하면 having 절을 다음과 같이 변경해야합니다. HAVING SUM (status_calc) = (SELECT COUNT (DISTINCT (status)) FROM my_right_tabe); – user1898027