возникли проблемы с запросом

#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. Или разделите имена ваших полей, как вы должны делать в любом случае.