Mysql 删除行并比较月份
我有两张客户债务表。第一个是: 客户债务:id、客户名称、债务总额、当前日期、当前时间 和client_details表,它通过一个外键连接到client_债务,并在其中添加每个客户的付款 客户详细信息:id、客户id、付款、现在日期、现在时间 我想做的是,做一个内部连接,在这里我选择client_name和他的total_debs,并从client_details中选择一个列,该列为每个client_id的付款总额。因此我尝试了以下方法:Mysql 删除行并比较月份,mysql,sql,Mysql,Sql,我有两张客户债务表。第一个是: 客户债务:id、客户名称、债务总额、当前日期、当前时间 和client_details表,它通过一个外键连接到client_债务,并在其中添加每个客户的付款 客户详细信息:id、客户id、付款、现在日期、现在时间 我想做的是,做一个内部连接,在这里我选择client_name和他的total_debs,并从client_details中选择一个列,该列为每个client_id的付款总额。因此我尝试了以下方法: SELECT t1.client_name, t1.t
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
结果是这样的:
黑色的一行,是客户为一个产品支付所有债务的地方,即使他因为购买了其他产品而有其他债务,所以我需要从表中删除这一行。所以我尝试向这个连接查询添加AND
但结果仍然是一样的:
现在我真正想做的是,删除客户支付的债务总额等于其支付金额的行,并添加一个新条件,从客户处获取日期的详细信息,提取月份并与当前月份进行比较,以查看客户是否在本月支付款项
感谢您的帮助。尝试以下方法:
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;
如果我正确理解你的问题,它应该是t1。total_debts公司我尝试了它,它给了我以下错误:group函数的使用无效,但当我将其用作Payment时它工作是的,但你的查询是total_debts不等于String Payment先生,我只想显示他们没有支付所有欠款的客户,或者每个派生表都应该有自己的表alias@androidnation修正了mysql的查询,试试吧,我需要你帮我做点别的,有时候一个客户买了两件东西,但这个月只买了一件,所以实际上他会付钱,然后我不想把他的名字显示在尚未付款的名单上
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;