选择特定的数据SQL

时间:2018-07-31 03:24:43

标签: mysql sql

尝试从数据库中选择特定变量的最新输入和第一输入。

我使用以下命令:

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。

如何升级此代码?

1 个答案:

答案 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值绑定到此参数。