我试图从SQL查询中获取选择的反转。这里是我的情景,我选择与查询有关的家庭付款,并且在过去6个月内已经捐款的人被认为是活跃的。我对过去6个月没有进入的人感兴趣。MYSQL NOT IN子查询
我可以选择那些谁作出了捐赠在过去的6个月:
SELECT ppl.plg_FamID
FROM pledge_plg AS ppl
WHERE ((DATEDIFF(NOW(), ppl.plg_date) < 180))
我得到一个错误(“内部服务器错误”),当我尝试选择谁没有做的那些捐款。我用上面的代码子查询语句中的NOT IN内部功能如下:
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
完整的代码(仅供参考),如下所示。
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
在这个问题上的任何洞察力表示赞赏。