更新表,select表达式返回多行

时间:2013-09-25 10:20:13

标签: sql-server-2008 sql-update

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

以下查询引发了我的错误

Msg 512,Level 16,State 1,Line 1 子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。 声明已经终止。

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

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

2 个答案:

答案 0 :(得分:2)

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

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

下面应该是你需要的,但请注意,因为它没有假设你想要更新整个表的where子句。

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

答案 1 :(得分:0)

UPDATE faults_analysis
       set datekey =  cast(convert(varchar(10),faultstarttime,112) as int)

无需从FAULTS_ANALYSIS FA中添加 from