SQL 쿼리에서 선택 항목의 역함을 얻으려고합니다. 제 시나리오는 쿼리가있는 가족에 관련된 지불금을 선택하고 지난 6 개월 동안 기부를 한 사람들은 활성화 된 것으로 간주됩니다. 나는 지난 6 개월 동안 입장이없는 사람들에게 관심이 있습니다.MYSQL NOT IN subselect 쿼리
내가 함께 지난 6 개월에 기부를 만든 사람을 선택할 수 있습니다 : 내가 만든하지 않은 사람을 선택하려고 할 때
SELECT ppl.plg_FamID
FROM pledge_plg AS ppl
WHERE ((DATEDIFF(NOW(), ppl.plg_date) < 180))
내가 ("내부 서버 오류") 오류가 발생을 기부. (단지 참조) 다음과 같이
SELECT pp.plg_FamID
FROM pledge_plg AS pp
WHERE pp.plg_FamID NOT IN (
SELECT ppl.plg_FamID
FROM pledge_plg AS ppl
WHERE ((DATEDIFF(NOW(), ppl.plg_date) < 180))
)
ORDER BY pp.plg_FamID ASC, pp.plg_date DESC
LIMIT 0, 30
전체 코드는 다음과 같이 나는 함수에서 NOT 내부 부속 문 내부에 위의 코드를 사용합니다.
SELECT DISTINCT
ff.fam_Envelope AS ENV,
ff.fam_ID AS "Family ID",
ff.fam_Name AS Family,
fc.c3 AS "Active?",
pp.plg_date,
(DATEDIFF(NOW(), pp.plg_date))
FROM
family_fam AS ff
LEFT JOIN family_custom AS fc ON ff.fam_ID = fc.fam_ID
LEFT JOIN pledge_plg AS pp ON ff.fam_ID = pp.plg_FamID
WHERE
fc.c3 = "true"
AND pp.plg_FamID NOT IN (
SELECT ppl.plg_FamID
FROM pledge_plg AS ppl
WHERE ((DATEDIFF(NOW(), ppl.plg_date) < 180))
)
ORDER BY ff.fam_ID ASC, pp.plg_date DESC
LIMIT 0, 30
이 문제에 대한 통찰력은 인정됩니다.