У меня вопрос, как использовать столбец «псевдоним» в предложении where/having. Я знаю, что есть некоторые вопросы по теме. Но я ищу через сеть и на stackoverfolw и не нашел решения.mysql используя расчетный столбец где/с
Так я надеюсь на помощь в этом случае ..
Следующее утверждение хорошо работает:
SELECT PHRASE,COUNT(*) AS A
FROM my_statistics
WHERE TIMESTAMP>NOW()-INTERVAL 7 DAY
GROUP BY PHRASE ORDER BY A DESC
LIMIT 16;
PHRASE
и TIMESTAMP
столбцы в таблице. Код выбирает первые 16 PHRASES, которые вставляются пользователями за последние 7 дней. Существует также столбец USER, поэтому мне сейчас нравится выбирать первые 16 фраз, которые вставляются более чем одним пользователем. Так я попытался это:
SELECT PHRASE,COUNT(*) AS A, COUNT(DISTINCT(USER)) AS B
FROM my_statistics
WHERE TIMESTAMP>NOW()-INTERVAL 7 DAY
AND B>1
GROUP BY PHRASE ORDER BY A DESC
LIMIT 16;
На другие вопросы по StackOverflow Увлекаюсь к информации, что я должен использовать HAVING
SELECT PHRASE,COUNT(*) AS A, COUNT(DISTINCT(USER)) AS B
FROM my_statistics
WHERE TIMESTAMP>NOW()-INTERVAL 7 DAY
GROUP BY PHRASE ORDER BY A DESC
HAVING B>1
LIMIT 16;
Но это возвращает ошибку:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'HAVING B>1 LIMIT 16' at line 5
I не знаю, как может быть правильный синтаксис. Надеюсь на любую помощь здесь. Спасибо!
Дубликат: http://stackoverflow.com/questions/942571/using-column-alias-in-where-clause-of-mysql-query-produces-an-error – Sammaye
@Sammaye чтение HTTP://stackoverflow.com/questions/942571/using-column-alias-in-where-clause-of-mysql-query-produces-an-error ... это люди, это невозможно? –
Псевдонимы не поддерживаются, да; в соответствии с документами для WHERE – Sammaye