mysql查询只处理某些特定记录,而不是所有数据
第一个是student_详细信息表的图像,第二个是当我像这样启动查询时payment_详细信息表的图像mysql查询只处理某些特定记录,而不是所有数据,mysql,Mysql,第一个是student_详细信息表的图像,第二个是当我像这样启动查询时payment_详细信息表的图像 SELECT `student_detail`.`id`, `student_detail`.`first_name`, `student_detail`.`last_name`, `student_detail`.`course`, `payment_detail`.`id`, `student_id`, `inst_paid_date`, `next_inst_
SELECT `student_detail`.`id`,
`student_detail`.`first_name`,
`student_detail`.`last_name`,
`student_detail`.`course`,
`payment_detail`.`id`,
`student_id`,
`inst_paid_date`,
`next_inst_date`,
`paid_installment`,
`next_installment_amount`
FROM `student_detail`,`payment_detail`
WHERE MONTH(`next_inst_date`)=MONTH(now())
AND `inst_paid_date`<`next_inst_date`
AND `student_detail`.`id`=`student_id`
AND `student_id`='10'
AND `inst_paid_date` in(select max(`inst_paid_date`) from `payment_detail`)
选择“学生详细信息”。`id`,
`学生详细资料`.`名字`,
`学生详细资料`.`姓`,
`学生详细信息“课程”,
`付款详细信息“.`id`,
`学生id`,
`安装付款日期`,
`下一个安装日期`,
`分期付款,
`下一期分期付款金额`
从'student\u detail','payment\u detail'
其中月份(`next_inst_date`)=月份(now())
和'inst_paid_date'原因是您将整个payment_detail
表中的inst_paid_date
限制为最大值。由于此最大值存在时是针对学生id 9的,因此与学生id 10上的筛选器冲突
尝试向子查询添加相同的筛选器,如下所示:
WHERE
...
AND `student_id`='10'
AND `inst_paid_date` in (select max(`inst_paid_date`)
from `payment_detail`
where `student_id` = '10')
更通用的解决方案是将子查询转换为相关子查询。这需要在付款详情表的外部引用上使用别名:
...
FROM `student_detail`,`payment_detail` as `PD`
WHERE MONTH(`next_inst_date`)=MONTH(now())
AND `inst_paid_date`<`next_inst_date`
AND `student_detail`.`id`=`student_id`
AND `PD`.`student_id`='10'
AND `inst_paid_date` in(select max(`inst_paid_date`)
from `payment_detail`
where `student_id` = `PD`.`student_id`)
。。。
从'student\u detail','payment\u detail'改为'PD`
其中月份(`next_inst_date`)=月份(now())
和'inst_paid_date'请在数据中创建一个小提琴,并用期望的结果更新问题。