当前位置: 首页 > 面试题库 >

计算子句中的列-性能

柯浩壤
2023-03-14
问题内容

由于您不能在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子句中才能起作用。



 类似资料:
  • 问题内容: 这行代码是我的select语句的摘录。 以下是我的where子句的摘录 我的问题是如何引用FreeDaysRemaining列,因此可以将其与@进行比较 我正在寻找这样的东西 问题答案: 除了Aaron的答案,您还可以使用公用表表达式:

  • 问题内容: 我需要按postgres中的计算列进行过滤。使用MySQL很容易,但是如何使用Postgres SQL实施呢? 伪代码: 有SQL技巧吗? 问题答案: 如果不想重复该表达式,则可以使用派生表: 这不会对性能产生任何影响,仅是SQL标准所需的语法糖。 或者,您可以将以上内容重写为公用表表达式: 您更喜欢哪一个在很大程度上取决于品味。CTE的优化方式与派生表相同,因此第一个可能更快,尤其是

  • 问题内容: 假设我想要一个表来记录其他表中的日期和列数(或者实际上是任何种类的数学/字符串concat等)。 每当执行插入操作时,是否可以为我计算计数列? 例如做类似的事情: 并具有由mysql计算的计数。 显然,我可以自己做一个查询来获取计数并插入计数,但是这样做会更好。 问题答案: 当通过插入,更新或删除表来更改数据时,触发器是注释数据的最佳工具。 要使用当前日期自动将日志中新行的日期列设置为

  • 问题内容: 我想使用方法来计算一个句子中的单词数。我写了这段代码,但我不太确定为什么它不起作用。无论我写什么,我都只会收到一个单词的数。如果您能告诉我如何修正我写的内容,而不是给我一个完全不同的主意,那就更好了: 问题答案: 您需要阅读整行。代替使用。

  • 问题内容: 我有一个执行一些排名的SQL查询,如下所示: 我想在末尾的WHERE条件下使用该排名。 现在,我将此查询嵌套在另一个查询中,并在该查询上进行排名过滤,但是没有更简单或更快速的方法来过滤SELECT语句中的此类值吗? 问题答案: 使用CTE(公用表表达式)-一种“内联”视图,仅用于下一条语句:

  • 问题内容: 我正在编写一个非常基本的Java程序,该程序可以计算句子中每个单词的频率,到目前为止,我设法做到了这一点 我已经提取了每个字符串并将其存储在数组中,现在的问题实际上是如何计算每个“单词”重复出现的次数以及如何显示以使重复的单词不会多次显示,您能帮我这个忙吗?一个? 问题答案: 使用以单词为键的地图并将其计为值,像这样 如果不允许使用java.util,则可以使用一些排序算法对arr进行