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