gpt4 book ai didi

MYSQL NOT IN subselect 查询

转载 作者:行者123 更新时间:2023-11-29 03:07:22 24 4
gpt4 key购买 nike

我正在尝试从 sql 查询中获取选择的逆。这是我的场景,我通过查询选择与一个家庭相关的付款,那些在过去 6 个月内捐款的人被认为是活跃的。我对过去 6 个月内没有条目的人感兴趣。

我可以选择过去 6 个月内捐款的人:

SELECT ppl.plg_FamID
FROM pledge_plg AS ppl
WHERE ((DATEDIFF( NOW(), ppl.plg_date ) < 180) )

当我尝试选择尚未捐款的人时,出现错误(“内部服务器错误”)。我在 NOT IN 函数内的 subselect 语句中使用上面的代码,如下所示:

    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

对问题的任何见解表示赞赏。

最佳答案

NOT IN 解决方案的问题在于,如果内部查询具有一个或多个空值,则结果集为空。可以尝试在内部查询的where子句中加入IS NOT NULL来解决。

WHERE  ((DATEDIFF( NOW(), ppl.plg_date ) < 180) ) AND ppl.plg_date IS NOT NULL

关于MYSQL NOT IN subselect 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13303026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com