我的需求:

我要查询acc_repay.repayment_plan表的term为0、term_status为UNDUE、term_penalty大于0数据,并且acc_repay.repayment_plan表的due_bill_no存在于acc_cus.cus_user_base表

先看一个反面例子:

提问: MySQL根据acc_cus.cus_user_base表的due_bill_no字段,查询出acc_repay.repayment_plan表的term为0、term_status为UNDUE、term_penalty大于0数据,请你编写sql,用中文回答 回答:

根据acc_cus.cus_user_base表的due_bill_no字段,查询出acc_repay.repayment_plan表的term为0、term_status为UNDUE、term_penalty大于0数据的SQL语句如下: 
 
SELECT * 
FROM acc_repay.repayment_plan 
WHERE term = 0 
AND term_status = 'UNDUE' 
AND term_penalty > 0;

这个结果不符合我的需求。

优化提问

提问:

MySQL从acc_cus.cus_user_base表的due_bill_no字段,acc_repay.repayment_plan表也存在due_bill_no字段,两个表通过due_bill_no字段关联,查询出acc_repay.repayment_plan表中存在acc_cus.cus_user_base表due_bill_no,并且的term为0、term_status为UNDUE、term_penalty大于0数据,请你编写SQL,用中文回答

回答:

根据acc_cus.cus_user_base表的due_bill_no字段和acc_repay.repayment_plan表的due_bill_no字段进行关联查询,筛选出acc_repay.repayment_plan表中满足以下条件的数据:term为0、term_status为UNDUE、term_penalty大于0。

SQL语句如下:

SELECT *
FROM acc_repay.repayment_plan
WHERE due_bill_no IN (
  SELECT due_bill_no
  FROM acc_cus.cus_user_base
)
AND term = 0
AND term_status = 'UNDUE'
AND term_penalty > 0;