【问题标题】:SQL Server UPDATE and SET Using a SELECT statementSQL Server UPDATE 和 SET 使用 SELECT 语句
【发布时间】:2018-10-06 05:54:09
【问题描述】:

我需要用 SELECT 语句生成的数据填充一个新列“Better_test”:

SELECT [User Organization], RIGHT([User Organization], LEN([User Organization]) - CHARINDEX(',', [USER ORGANIZATION])) AS Better_test
FROM Logins

下面的代码给了我这个错误: 当子查询不使用 EXISTS 引入时,选择列表中只能指定一个表达式。

UPDATE Logins
    SET Better_test = ( SELECT [User Organization], RIGHT([User Organization], LEN([User Organization]) - CHARINDEX(',', [USER ORGANIZATION]))
    FROM Logins

【问题讨论】:

  • 这里不要使用子查询。该子查询返回超过 1 行。并且超过 1 列。到底是什么????
  • 为什么要在这里更新?每次添加或更改行时,您都必须再次运行该更新。这可能是一个简单的计算列(在表中、在视图中、在查询中等)。数据是多余的。

标签: sql sql-server select sql-update


【解决方案1】:

您不需要子查询,尤其是返回两个值的子查询。另外,FROM 是不必要的:

UPDATE Logins
    SET Better_test = RIGHT([User Organization], LEN([User Organization]) - CHARINDEX(',', [USER ORGANIZATION]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    • 2017-03-11
    • 2021-11-12
    相关资源
    最近更新 更多