由于您不能像这样在 MySQL 的 where 子句中使用计算列:
SELECT a,b,c,(a*b+c) AS d FROM table
WHERE d > n
ORDER by d
你必须使用
SELECT a,b,c,(a*b+c) AS d FROM table
WHERE (a*b+c) > n
ORDER by d
计算(在那个例子中是“(a * b + c)”每行执行一次还是两次?有没有办法让它更快?我觉得奇怪的是可以在列上排序但没有一个 WHERE 子句。
最佳答案
您可以使用 HAVING 来过滤计算列:
SELECT a,b,c,(a*b+c) AS d, n FROM table
HAVING d > n
ORDER by d
请注意,您需要在 SELECT 子句中包含 n
才能正常工作。
关于mysql - where 子句中的计算列 - 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16068662/