Последние обновленные данные отображаются первыми в запросе postgres selet? - PullRequest
2 голосов
/ 07 марта 2020

У меня есть простой запрос, который принимает некоторые результаты из модели пользователя.

Запрос 1:

SELECT users.id, users.name, company_id, updated_at 
FROM "users" 
WHERE (TRIM(telephone) = '8973847' AND company_id = 90) 
LIMIT 20 OFFSET 0;

Результат:

enter image description here

Затем я сделал некоторое обновление для клиента 341683, и снова я выполняю тот же запрос в тот раз, когда результат показывает другой результат, то есть последнее обновление показывает первым. Итак, postgres принимает последнее обновление по умолчанию или что-то еще происходит здесь?

enter image description here

1 Ответ

3 голосов
/ 07 марта 2020

Без предложения order by база данных может возвращать строки в любом порядке и обычно просто возвращает их в зависимости от того, какой из них быстрее. Очевидно, что строка, которую вы недавно обновили, будет в некотором кеше и, таким образом, будет возвращена первой.

Если вам нужно полагаться на порядок возвращаемых строк, вам нужно явно указать это, например:

SELECT   users.id, users.name, company_id, updated_at
FROM     "users" 
WHERE    (TRIM(telephone) = '8973847' AND company_id = 90)
ORDER BY id -- Here!
LIMIT    20 OFFSET 0
...