Php 如何编写sql查询以获取此输出?
我有一个包含以下字段的数据库表:Php 如何编写sql查询以获取此输出?,php,mysql,Php,Mysql,我有一个包含以下字段的数据库表: id, loan_no, installment, status 其中有贷款信息,如 如果一笔贷款有24笔分期付款,则有24行包含相同的贷款编号和分期付款状态,即已支付或未支付 因此,我想获得分期付款状态=已支付的贷款 是否可以编写一个查询以获得结果?尝试以下操作: SELECT DISTINCT loan_no FROM loan WHERE loan_no NOT IN (SELECT DISTINCT loan_no FROM loan WHERE st
id, loan_no, installment, status
其中有贷款信息,如
如果一笔贷款有24笔分期付款,则有24行包含相同的贷款编号和分期付款状态,即已支付或未支付
因此,我想获得分期付款状态=已支付的贷款
是否可以编写一个查询以获得结果?尝试以下操作:
SELECT DISTINCT loan_no FROM loan
WHERE loan_no NOT IN (SELECT DISTINCT loan_no FROM loan WHERE status = 'unpaid')
SELECT loan_no FROM your_table
WHERE loan_no NOT IN
SELECT DISTINCT loan_no FROM your_table
WHERE status = 'unpaid')
GROUP BY loan_no
差不多
select distinct
i.loan_no,
i.status
from
info as i
left outer join info as i2
on i.loan_no = i2.loan_no and i2.status = 'unpaid'
where
i.status = 'paid'
and
i2.loan_no is null
;
那么所有的贷款都会有24次还款?如果您想为所有已支付全部24笔款项的贷款提取loan_no,则类似于上述的操作将起作用。您的查询返回一些未支付状态的贷款:OP需要所有状态为“已支付”的贷款……OP说“如果一笔贷款有24笔分期付款”,他提供了一个示例;)是的,分期付款金额并不总是24。这是错误的:您正在接受未付分期付款(使用子查询)并将其从表中删除。。。所以你可以分期付款,但不是分期付款的贷款;)谢谢,这同样有效,但是产生结果需要更长的时间
SELECT loan_no FROM YOUR_TABLE
WHERE id NOT IN (SELECT id FROM YOUR_TABLE WHERE status = 'unpaid') GROUP BY loan_no
SELECT A.loan_no FROM (
SELECT loan_no, COUNT(status) AS installments
WHERE status = 'paid'
GROUP BY loan_no, status
) AS A
WHERE A.installments = 24
SELECT loan_no FROM YOUR_TABLE
WHERE id NOT IN (SELECT id FROM YOUR_TABLE WHERE status = 'unpaid') GROUP BY loan_no