Nat*_*n H 10 mysql sql aggregate-functions
首先,如果有人有更好的头衔,请帮忙.
如果我让我们说一个带有'day'列的'calendar'表.我有以下查询:
SELECT day, day AS testDay, testDay AS test2Day FROM calendar
Run Code Online (Sandbox Code Playgroud)
MySQL会抱怨"testDay"是一个未知的列.当然你会告诉我这句话没用,但我的陈述看起来更像是这样:
SELECT day, SOME_CRAZY_EXPRESSION_OF(day) AS testDay, EXPRESSION_OF(testDay) AS test2Day FROM calendar
Run Code Online (Sandbox Code Playgroud)
重点是我不想评估第一个表达式的两倍,以便在第二个表达式中使用它.那么有没有办法使用select中计算的值作为select本身的一部分?
我当然可以这样做:
SELECT day, SOME_CRAZY_EXPRESSION_OF(day) AS testDay, EXPRESSION_OF(SOME_CRAZY_EXPRESSION_OF(day)) AS test2Day FROM calendar
Run Code Online (Sandbox Code Playgroud)
但我正在努力避免浪费.如果我别无选择,那就是我要做的.
Joa*_*son 10
在MySQL中,你需要为表达式的值分配一个临时变量以便能够重用它,这应该这样做;
SELECT day, @tmp:=SOME_CRAZY_EXPRESSION_OF(day) AS testDay,
EXPRESSION_OF(@tmp) AS test2Day FROM calendar
Run Code Online (Sandbox Code Playgroud)
有关性能影响的更多分析,请参阅此页面以获取另一个示例.
| 归档时间: |
|
| 查看次数: |
4051 次 |
| 最近记录: |