更新表集列SQL Server

时间:2012-09-10 21:02:24

标签: sql sql-server sql-update

我正在尝试运行下面的代码并且我一直收到此错误:

  

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

我正在尝试创建一个字段来识别个人用户。有什么建议吗?

UPDATE dbo.AAASTA_CONTACT
SET dbo.AAASTA_CONTACT.ALIAS_KEY =
(SELECT(SUBSTRING(COALESCE(CAST(ADDR.ADDR_ZIPCODE AS NCHAR(5)), '     ') 
        + COALESCE(CAST(UPPER(CON2.CON_LAST_NAME)AS NCHAR(5)), '     ') 
        + COALESCE(CAST(UPPER(CON2.CON_FST_NAME)AS NCHAR(5)), '     ') 
        + COALESCE(CAST(UPPER(ADDR.ADDR_ADDR_NAME) AS NCHAR(5)), '     '),1,20))
FROM dbo.AAASTA_CONTACT CON2
JOIN dbo.AAASTA_ADDR_PER ADDR
ON (CON2.CON_PERSON_UID = ADDR.T_ADDR_PER_PER_ID))

1 个答案:

答案 0 :(得分:1)

我认为这就是你要找的东西。它将使用正确的值更新每一行:

UPDATE 
    dbo.AAASTA_CONTACT
SET 
    dbo.AAASTA_CONTACT.ALIAS_KEY = SUBSTRING(COALESCE(CAST(ADDR.ADDR_ZIPCODE AS NCHAR(5)), '     ') + COALESCE(CAST(UPPER(CON2.CON_LAST_NAME)AS NCHAR(5)), '     ')  + COALESCE(CAST(UPPER(CON2.CON_FST_NAME)AS NCHAR(5)), '     ') + COALESCE(CAST(UPPER(ADDR.ADDR_ADDR_NAME) AS NCHAR(5)), '     '),1,20)
FROM 
    dbo.AAASTA_CONTACT CON2
JOIN 
    dbo.AAASTA_ADDR_PER ADDR
    ON (CON2.CON_PERSON_UID = ADDR.T_ADDR_PER_PER_ID)