【问题标题】:SQL MAX not returning unique recordsSQL MAX 不返回唯一记录
【发布时间】:2019-01-07 09:06:53
【问题描述】:

我在我的数据库中名为“Date_Created”的字段上使用 SQL MAX,基本上我用它来为特定用户带回最近的记录。它适用于所有计数高于 1 的用户记录,但是当用户只有一条记录时,SQL MAX 不返回记录”谁能告诉我我做错了什么?

代码:

  "SELECT CP_Score.Credit_Score "
. "FROM CP_Score "
. "INNER JOIN phpro_users ON CP_Score.ID_No=phpro_users.ID_No "
. "WHERE phpro_users.User_ID = $userloggedin "
. "  AND CP_Score.Date_Created = (SELECT MAX(CP_Score.Date_Created) "
. "  FROM CP_Score)";

【问题讨论】:

  • 在最后的选择中添加WHERE CP_Score.ID_No = $userloggedin
  • 子查询需要一个关联条件,以确保您获得主查询 CP_Score 值的最大日期。

标签: sql select max


【解决方案1】:
SELECT CP_Score.Credit_Score
  FROM CP_Score
 INNER JOIN phpro_users ON CP_Score.ID_No=phpro_users.ID_No
 WHERE phpro_users.User_ID = $userloggedin
   AND CP_Score.Date_Created = (SELECT MAX(cps2.Date_Created)
                                  FROM CP_Score cps2 
                                 WHERE cps2.ID_No=phpro_users.ID_No)

【讨论】:

  • 非常感谢。遗憾的是仍然无法正常工作:( 代码更改如下: SELECT CP_Score.Credit_Score from CP_Score inner join phpro_users on CP_Score.ID_No=phpro_users.ID_No where phpro_users.User_ID= $userloggedin and CP_Score.Date_Created=(select MAX(CP_Score.Date_Created) from CP_Score 其中 CP_Score.ID_No=phpro_users.User_ID)
【解决方案2】:

如果您正在寻找一条记录,您可以将结果集限制为一条记录。在 ANSI/ISO 标准语法中:

SELECT s.Credit_Score
FROM CP_Score s INNER JOIN
     phpro_users u
     ON s.ID_No = u.ID_No
WHERE u.User_ID = $userloggedin
ORDER BY Date_Created DESC
FETCH FIRST 1 ROW ONLY;

一些数据库以不同的方式表达FETCH FIRST 子句——SELECT TOP (1)LIMIT 很常见。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多