来自别名的SQL条件

时间:2016-12-02 16:00:48

标签: sql mariadb

这就是我的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是别名,为什么我无法在where条件下使用它?

注意:我使用的是MariaDB 10.1.13

2 个答案:

答案 0 :(得分:2)

您不能在where子句中使用百分比别名,因为where子句是在SQL Server的select子句之前计算的。有关详细信息,请参阅此博客文章:https://www.bennadel.com/blog/70-sql-query-order-of-operations.htm

答案 1 :(得分:0)

该问题的一个解决方案:将WHERE更改为HAVING