У меня есть еще один для вас, ребята. Я искал вокруг, но я не могу понять причину этой проблемы.
В принципе, я хочу сделать DISTINCT на user_id, который представляет собой столбец, который естественно соединяется и существует в таблицах «user» и «leaderboard_entry».
Это мой оригинальный запрос, который отлично работает, но я бы хотел отфильтровать дубликаты и показать только первый самый быстрый счет пользователя. Внутренний запрос в основном захватывает 100 из последних строк, а внешний запрос использует их по возрастанию leaderboard_entry_elapsed_time_ms.
set @ t1 = 0; выберите из ( выберите @ t1: = @ t1 + 1 в качестве leaderboard_entry_youngness_rank, 1- @ t1 / 100 as leaderboard_entry_youngness_based_on_expiry, leaderboard_entry. *, NOW () - leaderboard_entry_timestamp как leaderboard_entry_age_in_some_units, TO_DAYS (NOW ()) - TO_DAYS (leaderboard_entry_timestamp) как leaderboard_entry_age_in_days, leaderboard.leaderboard_quiz_mode, leaderboard.leaderboard_load_key, user.user_name from leaderboard_entry естественное соединение Лидеры естественное соединение пользователь где (leaderboard_load_key = 'es-en-animals-1' или leaderboard_load_key = '-es-en-animals-1') и leaderboard_quiz_mode = '0' порядок по leaderboard_entry_age_in_some_units asc, leaderboard_entry_timestamp ограничение по возрастанию 0, 100 ) как external_temp Сортировать по leaderboard_entry_elapsed_time_ms asc, leaderboard_entry_timestamp asc предел 0, 50
Я пробовал следующее, которое удаляет «leaderboard_entry. *» И добавляет ключевое слово DISTINCT таким образом с явным указанием имен столбцов, которые мне нужны:
set @ t1 = 0; выберите из ( выберите @ t1: = @ t1 + 1 в качестве leaderboard_entry_youngness_rank, 1- @ t1 / 100 as leaderboard_entry_youngness_based_on_expiry,
NOW () – leaderboard_entry_timestamp как leaderboard_entry_age_in_some_units,
TO_DAYS (NOW ()) – TO_DAYS (leaderboard_entry_timestamp)
как leaderboard_entry_age_in_days, leaderboard.leaderboard_quiz_mode,
leaderboard.leaderboard_load_key,
user.user_name
отличный leaderboard_entry.user_id,
leaderboard_entry.leaderboard_entry_id,
leaderboard_entry.leaderboard_id,
leaderboard_entry.leaderboard_entry_timestamp,
leaderboard_entry.leaderboard_entry_elapsed_time_ms,
from leaderboard_entry
естественное соединение
Лидеры
естественное соединение
пользователь
где
(leaderboard_load_key = 'es-en-animals-1'
или leaderboard_load_key = '-es-en-animals-1')
и leaderboard_quiz_mode = '0'
порядок по leaderboard_entry_age_in_some_units asc,
leaderboard_entry_timestamp ограничение по возрастанию 0, 100
) как external_temp
Сортировать по
leaderboard_entry_elapsed_time_ms asc,
leaderboard_entry_timestamp asc
предел 0, 50
Но я получаю эту ошибку, и это не имеет смысла … 🙁
# 1064 - У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашему MySQL версия сервера для правильного синтаксиса для использования рядом 'different leaderboard_entry.user_id, leaderboard_entry.leaderboard_entry_id,' на линии 12
Любая помощь очень ценится! свинья