你好伙伴Stackoverflowers!我有一个我正在研究的查询,我需要过滤0,但它不会删除那些记录,我似乎无法找出原因。
请参阅下文,
SELECT disb_sum, pl_balance,
COALESCE(p.pl_balance - pd.disb_sum, p.pl_balance - 0) AS pledge_balance
FROM contacts c
LEFT JOIN pledges p ON c.c_no = p.c_no
LEFT JOIN (
SELECT pl_no, disb_status, disb_no, disb_amount, SUM(disb_amount) AS disb_sum
FROM disbursements
WHERE disb_status = 1
GROUP BY pl_no
) pd ON p.pl_no = pd.pl_no
GROUP BY p.pl_no
HAVING pledge_balance > "0"
ORDER BY c.c_last
输出
# disb_sum, pl_balance, pledge_balance
NULL, '5000.00', '5000.00'
NULL, '5000.00', '5000.00'
'25000.00', '25000.00', '0.00'
NULL, '100000.00', '100000.00'
NULL, '6000.00', '6000.00'
NULL, '2500.00', '2500.00'
NULL, '1500.00', '1500.00'
我已尝试添加其他参数和disb_sum<> disb_sum但得到相同的结果集。
答案 0 :(得分:0)
GROUP BY p.pl_no
HAVING pledge_balance > "0"
试试这个:
WHERE pledge_balance > "0"
GROUP BY p.pl_no
我无法理解您为什么要按该列进行分组,因为它无论如何都不是结果集列。
答案 1 :(得分:0)
如果Niloct的答案不起作用,请尝试:
db.website.com
答案 2 :(得分:0)
我的猜测是pledge_balance
大于零。但是,它类似于0.0001。如果使用浮点数而不是定点数,这尤其可行。
所以,你可以尝试:
HAVING pledge_balance > 0.005
答案 3 :(得分:0)
我无法弄清楚我的参数有什么问题,所以我将查询加载到临时表中并以这种方式过滤。谢谢你们的及时反馈和帮助!