Вы заказываете по столбцу, которого нет в вашем списке DISTINCT
.
Это правильный синтаксис в MySQL
, однако ORDER BY
не имеет смысла.
Этот синтаксис является MySQL
расширением , этот запрос не будет выполнен в любом другом RDBMS
движке большой четверки.
Используется для упрощения запросов DISTINCT
и GROUP BY
в тех случаях, когда одно и то же значение column
в SELECT
или ORDER BY
всегда соответствует одному и тому же значению столбца в GROUP BY
или DISTINCT
.
Если в вашем случае вы можете иметь несколько значений c.date
для каждого значения t.id
, и какое значение c.date
будет выбрано для ORDER BY
, далеко не гарантировано (это может быть последнее значение , первое значение или любое другое значение).
Перепишите ваш запрос следующим образом:
SELECT t.id, t.title,
(
SELECT c.date
FROM comments c
WHERE c.parent_id = t.id
ORDER BY
c.date DESC
LIMIT 1
) lastcomment
FROM threads t
ORDER BY
ISNULL(lastcomment), lastcomment