我有一个表,其中包含Y,X1,X2和W列。

declare @std float
set @std = (select SUM(W*Col) from table)
update table set Col=sqrt(W)*(Col-@std)
select @std


我如何有效地将这些查询组合到每一列,并返回3个值[@std,每一列]

最佳答案

尽管您根据自己的值更新列有点奇怪,但是这符合您的定义。希望您只打算运行一次此查询。

DECLARE
    @std_y  FLOAT,
    @std_x1 FLOAT,
    @std_x2 FLOAT

SELECT
    @std_y =  SUM(W*Y),
    @std_x1 = SUM(W*X1),
    @std_x2 = SUM(W*X2)
FROM
    dbo.My_Table

UPDATE dbo.My_Table
SET
    Y  = SQRT(W) * (Y  - @std_y),
    X1 = SQRT(W) * (X1 - @std_y),
    X2 = SQRT(W) * (X2 - @std_y)

SELECT
    @std_y  AS std_y,
    @std_x1 AS std_x1,
    @std_x2 AS std_x2

关于mysql - 如何在涉及更新语句的查询中联接多个选择语句的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35419282/

10-11 03:17
查看更多