#mysql
#mysql
Вопрос:
У меня есть база данных с user_id
и last_updated
SELECT user_id, MAX(last_updated) as timestamp
FROM online
WHERE user_id > 0
GROUP_BY user_id
Я получаю эту ошибку
У вас ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с ‘GROUP_BY user_id’ в строке 1
SELECT user_id, MAX(last_updated) as timestamp
FROM online
WHERE user_id > 0
GROUP_BY user_id
Кто-то предложил мне использовать приведенный выше запрос, поэтому я не уверен, почему я получаю эту ошибку
Я погуглил group_by
и не вижу, что я сделал не так. Я подумал, может быть, as timestamp
но не уверен!
Комментарии:
1. Это GROUP BY , а не GROUP_BY.
2. Лол, я не могу поверить, что теперь, когда я оглядываюсь на свой поиск, это так же, как вы сказали, просто забавно, что я этого не видел!
3. еще раз спасибо, я не могу поверить, что это было что-то настолько простое, что я просмотрел!
4. tomalak спасибо, что придал моему вопросу такой вид, как будто он должен был
Ответ №1:
Это GROUP BY
не GROUP_BY
…
SELECT user_id, MAX(last_updated) as timestamp
FROM online
WHERE user_id > 0
GROUP BY user_id
Обновить
В комментариях также обратите внимание, что timestamp является зарезервированным словом. Вы должны использовать псевдоним (т.Е. max_last_updated
) или экранировать его с помощью обратных меток (т. Е. `timestamp`)
Ответ №2:
Измените код с
SELECT user_id, MAX(last_updated) as timestamp
FROM online WHERE user_id > 0 GROUP_BY user_id
Для
SELECT user_id, MAX(last_updated) as `timestamp`
FROM online WHERE user_id > 0 GROUP BY user_id
Зарезервированные слова (такие как timestamp
) могут использоваться только в качестве идентификаторов, если они заключены в обратные метки «‘.
Также GROUP_BY
-> GROUP BY
* (Два слова, ключевые слова SQL никогда не содержат ‘_’ в них) *.
Еще лучше не использовать зарезервированные слова, поскольку они сбивают с толку (и от обратных ссылок у меня болит голова)
Комментарии:
1. lol ответ в комментарии к моему вопросу! это то, что я получаю за то, что не обращаю внимания на синтаксис
Ответ №3:
timestamp
это тип данных, используемый MySQL, попробуйте изменить его на что-нибудь другое.
Комментарии:
1. Или разделите имена ваших полей, как вы должны делать в любом случае.