2016-12-02 2 views
0

Это как мой SQL-запрос выглядит следующим образом:SQL условие из псевдонима

SELECT 
    *, 
    (
     10 * MATCH(products.parameters) AGAINST('intel core i5') + 
     5 * MATCH(products.name) AGAINST('intel core i5') + 
     MATCH(products.description) AGAINST('intel core i5') 
    ) AS percentage 
FROM products 
WHERE 
    (
     MATCH(products.name, products.description, products.parameters) 
     AGAINST('intel core i5' IN BOOLEAN MODE) 
    ) AND percentage > 0 
ORDER BY percentage DESC; 

Это полнотекстовый поисковый запрос работает хорошо, когда я не использую percentage > 0. Это дает мне ошибку, говоря #1054 - Unknown column 'percentage' in 'where clause'. percentage - это псевдоним, почему я не могу использовать его в том месте где?

Примечания: Я использую MariaDB 10.1.13

+0

Включите запрос в производную таблицу. Сохраняйте процентное состояние снаружи. – jarlh

+0

Я не уверен, понимаю ли вы вас. Можете ли вы показать мне пример? – debute

+0

Хорошо, nvermind, я нашел решение с 'HAVING percent> 0'. – debute

ответ

2

Вы не можете использовать процентный псевдоним в вашем где предложение, потому что, где положение вычисляется до выбора пункта с помощью сервера SQL. См. Это сообщение в блоге для получения дополнительной информации: https://www.bennadel.com/blog/70-sql-query-order-of-operations.htm

+0

Спасибо за информацию, это будет удобно в будущем. – debute

0

Одно решение проблемы: Измените WHERE на HAVING.

Смежные вопросы