由于您不能在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)”是每行执行一次还是两次执行?有没有一种方法可以使速度更快?我觉得很奇怪,可以对列进行ORDER但没有WHERE- 条款。
您可以使用HAVING来过滤计算列:
SELECT a,b,c,(a*b+c) AS d, n FROM table HAVING d > n ORDER by d
请注意,您需要将其包括n在SELECT子句中才能起作用。
n