Почему этот запрос дает другой результат, когда он используется в качестве подзапроса?

#sql #mariadb-10.4

Вопрос:

У меня есть эти данные:

 "config_timeslice_id","config_id","created"
14326,1145,"2021-08-31 13:45:00"
14325,1145,"2021-08-22 13:34:51"
14321,1145,"2021-06-16 10:47:59"
2357,942,"2019-12-24 10:09:38"
 

Когда я выполняю этот запрос:

 SELECT config_timeslice_id 
FROM config_timeslice 
WHERE config_id = 1145 
AND created <= CURRENT_TIMESTAMP 
ORDER BY created DESC 
LIMIT 1
 

Я получаю 14325, как и следовало ожидать, потому что сегодня 2021-08-23.

Но когда я выполняю этот запрос:

 SELECT DISTINCT t.config_id,
(
  SELECT config_timeslice_id 
  FROM config_timeslice 
  WHERE config_id = t.config_id 
  AND created <= CURRENT_TIMESTAMP 
  ORDER BY created DESC 
  LIMIT 1
) AS ts_id
FROM config_timeslice t
 

Я получаю:

 config_id,ts_id
942,2357
1145,14321
 

Я не могу понять, почему вторая строка не дает 14325

Комментарии:

1. Возможно, потому CURRENT_TIMESTAMP , что изменилось между двумя запусками запроса.

2. Код отлично работает для меня: dbfiddle.uk/…

3. @forpas — Спасибо! В MariaDB 10.4.18 должна быть ошибка. Когда я обновился до 10.4.21, который использует dbfiddle, он работает.

Ответ №1:

В MariaDB 10.4.18 должна быть ошибка. Когда я обновился до 10.4.21, это работает.