首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >where-子句- performance中的计算列

where-子句- performance中的计算列
EN

Stack Overflow用户
提问于 2013-04-18 03:33:59
回答 2查看 28.3K关注 0票数 39

因为您不能在MySQL的where子句中使用计算列,如下所示:

代码语言:javascript
复制
SELECT a,b,c,(a*b+c) AS d FROM table
WHERE d > n
ORDER by d

你必须使用

代码语言:javascript
复制
SELECT a,b,c,(a*b+c) AS d FROM table
WHERE (a*b+c) > n
ORDER by d

计算(在该示例中为"(a*b+c)“)是每行执行一次还是执行两次?有没有办法让它更快?我觉得很奇怪,可以对列进行排序,但不能有WHERE子句。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-18 03:37:59

您可以使用HAVING对计算列进行筛选:

代码语言:javascript
复制
SELECT a,b,c,(a*b+c) AS d, n FROM table
HAVING d > n
ORDER by d

请注意,您需要在SELECT子句中包含n,这样才能正常工作。

票数 79
EN

Stack Overflow用户

发布于 2013-04-18 03:40:36

你可以这样做:

代码语言:javascript
复制
SELECT a,b,c,d FROM 
(SELECT a,b,c,(a*b+c) AS d) AS tmp
WHERE d > n
ORDER BY d

但我不确定它会有什么性能影响。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16068662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档