Есть ли в этом MySQL Query какие-то скрытые ошибки? - PullRequest
3 голосов
/ 04 февраля 2010

Надеюсь, это не очень тупой вопрос. Я заметил, что 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

Ответы [ 4 ]

3 голосов
/ 04 февраля 2010

Все нормально. От http://dev.mysql.com/doc/refman/5.0/en/select.html:

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

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

3 голосов
/ 04 февраля 2010

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

см. Здесь: http://dev.mysql.com/doc/refman/5.1/en/group-by-hidden-columns.html

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

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

1 голос
/ 04 февраля 2010

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

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

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

1 голос
/ 04 февраля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...