尝试从数据库中选择特定变量的最新输入和第一输入。
我使用以下命令:
SELECT treatment_log.fun FROM treatment_log LEFT JOIN customers ON treatment_log.treatment_fk=customers.id WHERE treatment_log.created_at=( SELECT MAX(created_at) FROM treatment_log) AND customers.id = ?
SELECT treatment_log.fun FROM treatment_log LEFT JOIN customers ON treatment_log.treatment_fk=customers.id WHERE treatment_log.created_at=( SELECT MIN(created_at) FROM treatment_log) AND customers.id = ?
其中一个是MIN,另一个是MAX。我试图显示基于日期(created_at)的数据[这是自动生成的时间戳]。当前代码似乎运行不正常。它只会显示最近输入的数据,并显示NULL。
如何升级此代码?
答案 0 :(得分:1)
您需要对子查询进行限定,以便它只为您感兴趣的客户选择created_at
个日期。否则,您将获得MIN和MAX created_at
个日期,无论客户ID是什么,以及那些可能与您当前的客户不匹配。这就是为什么有时您没有返回任何数据的原因。尝试将子查询更改为:
( SELECT MAX(created_at) FROM treatment_log WHERE treatment_fk = ?)
因此您的整个查询将变为
SELECT treatment_log.fun
FROM treatment_log
LEFT JOIN customers
ON treatment_log.treatment_fk=customers.id
WHERE treatment_log.created_at=(SELECT MAX(created_at) FROM treatment_log WHERE treatment_fk = ?)
AND customers.id = ?
您还需要对MIN
子查询进行类似的更改。
另外请注意,您还需要将customers.id
值绑定到此参数。