简体   繁体   中英

Update Table Set Column SQL Server

I'm trying to run the code below and I keep getting this error back:

Msg 512, Level 16, State 1, Line 1 Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , > >, >= or when the subquery is used as an expression. The statement has been terminated.

I'm trying to make a field to identify individual users. Any suggestions?

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))

I think this is what you are looking for. It will update each row with the correct value:

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)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM