小编use*_*953的帖子

SQL SELECT语句表达式值重用于其他表达式

我有一个在mysql中有大量行数的表(虽然我正在寻找通用的SQL解决方案)

very_big_table(INT a, INT b, INT c, ...)
Run Code Online (Sandbox Code Playgroud)

我想要SELECT语句

SELECT a, 
    (b + c) as expression1,
    (b + c + a) AS expression2 -- basically (expression1 + a)
FROM very_big_table
WHERE ...
GROUP BY a
ORDER BY a DESC
Run Code Online (Sandbox Code Playgroud)

只要表达式1很简单,这看起来很好并且易于阅读.
但是当CASE-WHEN/IFNULL()/ SUM()/ MIN()/ STRCAT()或某些运算符在这些表达式中起作用时,它很难读取和调试.

我已经完成了一些已经问过的问题,
将mysql值分配给变量内联
使用另一列的列值(SQL Server)?
如何在同一个select语句中使用条件列值?

但是,如果我使用描述的方法

SELECT a, 
    expression1,
    (expression1 + a) AS expression2
FROM 
    (SELECT a,
        (b + c) AS expression1
    FROM very_big_table
    WHERE ...
    GROUP BY a) as inner_table
ORDER BY a DESC
Run Code Online (Sandbox Code Playgroud)

这工作正常,但这个查询需要花费大约70倍的时间来执行.至少只有一次,我解雇了它. …

mysql sql sql-server

6
推荐指数
2
解决办法
9026
查看次数

标签 统计

mysql ×1

sql ×1

sql-server ×1