mysql - 删除行并比较月份

标签 mysql sql

我有 2 个客户债务表。第一个是:

client_debts: (id, client_name, total_debts, date_now, time_now)

client_details 表通过外键连接到 client_debts,在其中,我们添加每个客户的付款

client_details: (id, client_id, payment, date_now, time_now)

我想要做的是,创建一个INNER JOIN,其中我选择 client_name 和他的total_debs,以及 client_details 中的一列,这使得每个 client_id< 的付款总和。所以我尝试了这个:

SELECT t1.client_name, t1.total_debts, t2.client_id, sum(payment) as 'payments' 
FROM client_debts t1
INNER JOIN client_details t2
ON t1.id = t2.client_id
GROUP BY t2.client_id

结果是这样的:

enter image description here

黑色行是客户支付产品所有债务的地方,即使他因为购买其他产品而有其他债务,所以我需要从表中删除这一行。因此,我尝试向此 JOIN 查询添加 AND

SELECT t1.client_name, t1.total_debts, t2.client_id, sum(payment) as 'payments' 
FROM client_debts t1
INNER JOIN client_details t2
ON t1.id = t2.client_id AND t1.total_debts<>'payment'
GROUP BY t2.client_id

但结果还是一样:

enter image description here

现在我真正想做的是删除客户支付的总债务等于其付款的行,并添加一个新条件,我从 client_details 中获取日期,提取月份并进行比较到当前月份,查看客户本月是否付款或仍未付款。

感谢任何帮助。

最佳答案

试试这个:

SELECT  main.* 
FROM    (SELECT    t1.client_name, t1.total_debts, t2.client_id, sum(payment) payments , t2.date_now ,
                    CASE MONTH(t2.date_now)  
                       WHEN MONTH(CURDATE()) THEN 'Paid'
                       ELSE 'Not Paid'
                    END current_month
        FROM client_debts t1  INNER JOIN client_details t2  ON t1.id = t2.client_id 
        GROUP BY t2.client_id) main
WHERE   main.total_debts<> main.payments;

关于mysql - 删除行并比较月份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34759781/

相关文章:

C# 数组作为 MySQL Select 语句的一部分?

php - 在 PHP 中合并来自不同数据库的两个 mysql 查询

sql - 如何根据列值进行条件连接

mysql - 这段代码可以安全地防止注入(inject)吗?

mysql - 选择数据时如何右对齐列?

sql - 如何从亚马逊 Redshift 中的字符串中删除非数字字符(句号 "."除外)

sql - 如何在一周内获取 "largest day"?

java - 使用 LiquiBase 和 Spring 将大量值(使用 FK)插入数据库

mysql - 连接/合并两个表,即兴/组成 "missing"条目

java - 如何从android向servlet发送带有参数的请求