带有select语句的SQL Update查询

时间:2013-07-09 14:30:18

标签: sql

我有一个包含电子邮件地址的表格。我正在尝试使用电子邮件地址中的域填充DomainName列。 select语句本身可以正常工作。但是当我将它添加到更新查询时,我得到以下内容:

  

子查询返回的值超过1。当子查询跟随=!=<<=>>=或子查询被用作子查询时,不允许这样做表达。

我应该使用什么代替=

update Table1 set Table1.DomainName=
(select SUBSTRING(Table1.Email,(CHARINDEX('@',Table1.Email)+1),LEN(Table1.Email) - 
(CHARINDEX('@',Table1.Email))) as DomainName FROM Table1)

3 个答案:

答案 0 :(得分:3)

只需删除子选择。

update Table1 
set Table1.DomainName= SUBSTRING(Table1.Email,(CHARINDEX('@',Table1.Email)+1),LEN(Table1.Email) - (CHARINDEX('@',Table1.Email))) 
FROM Table1

答案 1 :(得分:2)

删除SELECT语句,应该是这样的:

update Table1 
set Table1.DomainName= SUBSTRING(Table1.Email,
                                 (CHARINDEX('@', Table1.Email) + 1),
                                 LEN(Table1.Email) - (CHARINDEX('@',Table1.Email))

答案 2 :(得分:1)

只需删除子查询,这将起作用:

update Table1
set Table1.DomainName = SUBSTRING(Table1.Email,
    (CHARINDEX('@',Table1.Email)+1),
    LEN(Table1.Email) - (CHARINDEX('@',Table1.Email)))