У меня есть этот запрос, который проверяет каждое ключевое слово, введенное из текстового поля поиска, и должно возвращаться с помощью наиболее подходящих ключевых слов. Я сделал запрос и его работу отлично. Проблема в том, что я хотел бы исключить все KW_MATCHED с 0 значениями в возвращаемой строке.MySql Повторное использование псевдонима для предложения WHERE
SELECT
A1.*, (
SELECT
sum(
CASE
WHEN (A1.ID = A2.tag_id)
AND (
A2.keyword = 'keyword1' || A2.keyword = 'keyword2'
) THEN
1
ELSE
0
END
)
FROM
tbl_article_tags A2
) AS KW_MATCHED
FROM
tbl_article A1
ORDER BY
KW_MATCHED DESC
Результат:
+----+---------------+----------------+------------+
| ID | Title | Content | KW_MATCHED |
+----+---------------+----------------+------------+
| 1 | title | Lorem Ipsum... | 7 |
+----+---------------+----------------+------------+
| 2 | another title | Lorem Ipsum... | 5 |
+----+---------------+----------------+------------+
| 3 | another title | Lorem Ipsum... | 0 |
+----+---------------+----------------+------------+
| 4 | another title | Lorem Ipsum... | 0 |
+----+---------------+----------------+------------+
Я попытался повторным использованием псевдонима KW_MATCHED для ИНЕК (см моего запроса ниже), но он возвращает это сообщение:
[Err] 1054 - Неизвестная колонка «KW_MATCHED» в разделе «где»
SELECT
A1.*, (
SELECT
sum(
CASE
WHEN (A1.ID = A2.tag_id)
AND (
A2.keyword = 'keyword1' || A2.keyword = 'keyword2'
) THEN
1
ELSE
0
END
)
FROM
tbl_article_tags A2
) AS KW_MATCHED
FROM
tbl_article A1
WHERE
KW_MATCHED > 0
ORDER BY
KW_MATCHED DESC
есть ли способ сделать это? Благодаря передовой и извините за мой плохой английский :)
Пожалуйста, не говори «возвращает ошибку»: скопировать сообщение об ошибке в этом вопросе. –
вопрос отредактировал –