Есть ли в этом запросе MySQL какие-либо скрытые подводные камни?

StackOverflow https://stackoverflow.com/questions/2200165

  •  18-09-2019
  •  | 
  •  

Вопрос

Я надеюсь, что это не очень тупой вопрос.Я замечаю, что MySQL позволит мне вернуться к полю "Mnth" в моей ГРУППЕ и УПОРЯДОЧИТЬ.Это не так в каждом движке базы данных, с которым я работал.Кто-нибудь может подтвердить, что это приемлемый подход?

SELECT DATE_FORMAT(FROM_UNIXTIME(`swauditlogs`.`dateline`),'%Y-%m') AS Mnth, Count(`swauditlogs`.`ticketid`) AS Count
FROM swauditlogs LEFT JOIN swtickets ON swauditlogs.ticketid = swtickets.ticketid
WHERE swauditlogs.actionmsg Like 'Ticket status changed from:%to: Closed'
GROUP BY Mnth
ORDER BY Mnth DESC
Это было полезно?

Решение

Ничего страшного.От http://dev.mysql.com/doc/refman/5.0/en/select.html:

Select_expr может быть присвоен псевдоним, используя AS alias_name.Псевдоним используется в качестве имени столбца выражения и может использоваться в предложениях GROUP BY, ORDER BY или HAVING.

Однако мне не нравится это предложение LIKE.Нет ли другого столбца, который вы могли бы протестировать вместо того, чтобы выполнять LIKE для строки?

Другие советы

Это приемлемо в MySQL:

смотрите здесь: http://dev.mysql.com/doc/refman/5.1/en/group-by-hidden-columns.html

Обратите внимание, что если вы пытаетесь следовать стандартному SQL, вы не можете использовать выражения в предложениях GROUP BY.Вы можете обойти это ограничение, используя псевдоним для выражения...

...подразумевая, что вы можете использовать выражения с MySQL.

Я не знаю о каких-либо внутренних компонентах MySQL, но я использовал аналогичный запрос в нашей производственной системе, и до сегодняшнего дня этот запрос еще не привел к ее сбою.Так что это не ответ хакера MySQL, а просто мое наблюдение.

Ой, я забыл: ОТКАЗ ОТ ГАРАНТИИ: Если я говорю, что не вижу ошибок, это не значит, что их нет ;-)

ИМХО, для MySQL запрос выглядит нормально.

Стандартный SQL запрещает ссылки на псевдонимы столбцов в предложении WHERE, но вы можете использовать псевдоним в предложениях GROUP BY, ORDER BY или HAVING для ссылки на столбец.

http://dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top