SQL MAX не возвращает уникальные записи - PullRequest
0 голосов
/ 07 января 2019

Я использую SQL MAX для поля в моей базе данных с именем «Date_Created», по сути, я использую его для возврата самой последней записи для конкретного пользователя. Он отлично работает для всех пользовательских записей, число которых превышает 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)";

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Если вы ищете одну запись, вы можете ограничить набор результатов одной записью. В стандартном синтаксисе 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 являются общими.

0 голосов
/ 07 января 2019
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)
...