Попробуйте это:
SELECT username,
GREATEST(date_created, last_login, last_updated) last_activity
FROM your_table
ORDER BY last_activity DESC
РЕДАКТИРОВАНИЕ:
SELECT username,
GREATEST(
IFNULL(date_created, 0),
IFNULL(last_login, 0),
IFNULL(last_updated, 0)
last_activity
FROM your_table
ORDER BY last_activity DESC
РЕДАКТИРОВАНИЕ СНОВА:
В вашей копии БД (имеющей27.451 записей) Я использовал:
SELECT id,
GREATEST(
IFNULL(current_login_datetime, 0),
IFNULL(created_datetime, 0),
IFNULL(updated_datetime, 0))
last_activity
FROM users
ORDER BY last_activity DESC
получение точности 27.451 записей !!
Чтобы доказать, выполните этот запрос:
SELECT COUNT(*) FROM
(SELECT id,
GREATEST(
IFNULL(current_login_datetime, 0),
IFNULL(created_datetime, 0),
IFNULL(updated_datetime, 0))
last_activity
FROM users
ORDER BY last_activity DESC) der
и убедитесь, что возвращаемое число совпадает сquery
SELECT COUNT(*) FROM users
Ваша проблема может быть получена из ограничения на общее количество возвращенных или показанных записей.
Например, с помощью Navicat light вы можете иметь 1000 записей (но вы можете прочитать 27,451 как общее).