【问题标题】:Update table with select expression returning multiple rows使用返回多行的选择表达式更新表
【发布时间】:2013-09-30 21:18:59
【问题描述】:

我正在尝试将值从表的一列插入到另一列中,并进行轻微的转换。

下面的查询会抛出一个错误

消息 512,第 16 级,状态 1,第 1 行 子查询返回超过 1 个值。当子查询跟随 =、!=、、>= 或子查询用作表达式时,这是不允许的。 该语句已终止。

update faults_analysis
    set datekey = (select cast(convert(varchar(10),faultstarttime,112) as int) from FAULTS_ANALYSIS )

如何在不使用游标的情况下插入多个值

【问题讨论】:

    标签: sql-server-2008 sql-update


    【解决方案1】:

    我没有必要的声誉对此发表评论,所以我不能 100% 正确理解你。

    如果我理解正确,您是在尝试使用该表中另一列的转换值来更新同一表中的列?

    以下应该是您需要的,但是请小心,因为没有 where 子句假定您要更新整个表。

        update faults_analysis
           set datekey =  cast(convert(varchar(10),FA.faultstarttime,112) as int)
        from FAULTS_ANALYSIS FA
    

    【讨论】:

      【解决方案2】:
      UPDATE faults_analysis
             set datekey =  cast(convert(varchar(10),faultstarttime,112) as int)
      

      无需添加from子句“from FAULTS_ANALYSIS FA”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-17
        • 1970-01-01
        • 2019-02-09
        • 1970-01-01
        • 2021-11-23
        • 1970-01-01
        相关资源
        最近更新 更多