因为您不能在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子句。
发布于 2013-04-18 03:37:59
您可以使用HAVING对计算列进行筛选:
SELECT a,b,c,(a*b+c) AS d, n FROM table
HAVING d > n
ORDER by d
请注意,您需要在SELECT子句中包含n
,这样才能正常工作。
发布于 2013-04-18 03:40:36
你可以这样做:
SELECT a,b,c,d FROM
(SELECT a,b,c,(a*b+c) AS d) AS tmp
WHERE d > n
ORDER BY d
但我不确定它会有什么性能影响。
https://stackoverflow.com/questions/16068662
复制相似问题