Sqlite получает последнюю запись для этой таблицы - PullRequest
0 голосов
/ 06 сентября 2018

Я не могу понять, что я делаю здесь неправильно. Я запрашиваю таблицу sqlite для получения последней записи для каждого колледжа, но результат не совсем точен. Ниже приведена исходная таблица:

College  Status           Date
"UTAR   "CERTIFIED" "07/30/2018"
"UTA"   "CERTIFIED" "03/19/2018"
"UTD"   "CERTIFIED" "06/08/2018"
"UTEL"  "CERTIFIED" "03/13/2018"
"UTSA"  "CERTIFIED" "02/06/2018"
"UTT"   "CERTIFIED" "03/14/2018"
"UTPB"  "CERTIFIED" "07/23/2018"
"UTRG"  "CERTIFIED" "04/12/2018"
"UTAR"  "CERTIFIED" "05/31/2017"
"UTA"   "CERTIFIED" "03/02/2017"
"UTD"   "CERTIFIED" "04/13/2017"
"UTEL"  "CERTIFIED" "03/10/2017"
"UTSA"  "CERTIFIED" "02/13/2017"
"UTT"   "CERTIFIED" "03/11/2017"
"UTPB"  "CERTIFIED" "03/29/2017"
"UTRG"  "CERTIFIED" "04/12/2017" 

и это мой запрос:

SELECT *
FROM Status_Table AS S1
WHERE Date = (
                 SELECT MAX(Date)
                 FROM Status_Table AS S2
                 WHERE S1.College = S2.College
                                              );

и результат:

College  Status           Date
"UTAR"  "CERTIFIED" "07/30/2018"
"UTA"   "CERTIFIED" "03/19/2018"
"UTD"   "CERTIFIED" "06/08/2018"
"UTEP"  "CERTIFIED" "03/13/2018"
"UTT"   "CERTIFIED" "03/14/2018"
"UTPB"  "CERTIFIED" "07/23/2018"
"UTRG"  "CERTIFIED" "04/12/2018"
"UTSA"  "CERTIFIED" "02/13/2017"

если вы заметили, что в случае UTSA он не забрал самую последнюю дату от 02/06/2018. Есть идеи, что я здесь делаю не так?

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Проблема должна быть связана с типом столбца. Из документа SQLite о дате и времени ,

SQLite не имеет класса хранения, выделенного для хранения дат и / или времени. Вместо этого встроенные функции даты и времени в SQLite могут хранить даты и время в виде значений TEXT, REAL или INTEGER:

Я не знаю, почему нет предупреждения или ошибки при создании таблицы, но кажется, что для сравнения используется сравнение строк вместо даты. Столбец изменится на TEXT, а формат даты «ГГГГ-ММ-ДД» будет применен в моей скрипте sql. Затем с помощью функции date в запросе все работает.

sql скрипка

0 голосов
/ 06 сентября 2018

Вам нужна группа по максимальной дате. Попробуйте это -

SELECT *
FROM Status_Table
WHERE Date IN (SELECT MAX(Date)
               FROM Status_Table
               GROUP BY College);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...