相关疑难解决方法(0)

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
查看次数

在Postgres中添加current_timestamp和days列的总和

我希望通过将天数添加到当前时间来更新列.在pseudosyntax中它将是:

UPDATE foo
SET time = current_timestamp + days::integer
Run Code Online (Sandbox Code Playgroud)

days是同一个表中的一列.

postgresql timestamp

3
推荐指数
2
解决办法
7328
查看次数

如何在SQL SERVER 2005中获取给孩子的父级

我有一张这样的桌子

childid      parentid
------------------------
1       0
2       1
3       2
4       2
5       3
6       4
7       0
8       7
9       8
10      1
Run Code Online (Sandbox Code Playgroud)

如果我将childid设为5,那么parentid将为1(输出)

如果我将childid设为9,那么parentid将为7.(输出)

即根parentid为0,查询应该停在那里.

如何解决这样的查询?

请帮忙.

sql-server-2005 transitive-closure-table

3
推荐指数
1
解决办法
2090
查看次数