mysql - 如何在涉及更新语句的查询中连接多个选择语句的结果

标签 mysql sql database subquery

我有一个表,其中包含 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/

相关文章:

MySQL:从多个表中选择*,其中column1或column2 =查询

sql - T-SQL - GROUP BY 和 LIKE - 这可能吗?

php - 将用户输入数据与 mysql 数据库进行比较

sql - 选择多对多关系的最新记录

MYSQL查询: How to get values per category?

php - mysqli 根据行ID值显示数据

mysql - delphi 和 mysql 数据库帮助

PHP 本地主机应用程序连接到服务器数据库

php - 搜索字谜词的最快方法是什么?

mysql - 两台不同服务器上的 mysql 和 php 中的时间