【问题标题】:How to update row sets with a variable如何使用变量更新行集
【发布时间】:2014-08-29 17:01:22
【问题描述】:

我对 SQL 相当陌生,我正在尝试编写一个更新语句,该语句实质上会将数据从一列复制到另一列,以获取 600 条记录。

例如。 ADDRESS.FIRST_NAME 即“JOHN”将被复制到所有 600 条记录的 ADDRESS.CUSTCHAR5“JOHN”中。我有四列这需要发生。这是我所得到的。

DECLARE @fName CHAR、@lName CHAR、@email CHAR、@phoneNum CHAR
SET @fName = (SELECT FIRST_NAME FROM ADDRESS INNER JOIN CUST ON ADDRESS.CUST_CODE = CUST.CUST_CODE WHERE CUST.CATEGORY_CODE = 'SR' AND ADDRESS.CUSTCHAR5 为空)
SET@lName = (SELECT LAST_NAME FROM ADDRESS INNER JOIN CUST ON ADDRESS.CUST_CODE = CUST.CUST_CODE 其中 CUST.CATEGORY_CODE = 'SR' AND ADDRESS.CUSTCHAR5 IS NULL)
SET @email = (SELECT EMAIL FROM ADDRESS INNER 加入 CUST ADDRESS.CUST_CODE = CUST.CUST_CODE WHERE CUST.CATEGORY_CODE = 'SR' AND ADDRESS.CUSTCHAR5 为空)
SET @phoneNum = (SELECT TEL1 FROM ADDRESS INNER JOIN CUST ON ADDRESS.CUST_CODE = CUST.CUST_CODE 其中 CUST.CATEGORY_CODE = 'SR' 和 ADDRESS.CUSTCHAR5 为空)
更新 dbo.ADDRESS
SET ADDRESS.CUSTCHAR5 = @fName+@lName, ADDRESS.CUSTCHAR6 = @email, ADDRESS.CUSTMEMO1 = @phoneNum
FROM 地址
INNER JOIN CUST
开启 ADDRESS.CUST_CODE = CUST.CUST_CODE
WHERE CUST.CATEGORY_CODE = 'SR'
AND ADDRESS.CUSTCHAR5 为空
AND ADDRESS.EMAIL = @email

当我运行此语句时,我收到以下错误

子查询返回超过 1 个值。这是不允许的,当 子查询遵循 =、!=、、>= 或当子查询用作 一个表达式。

如果有人能提供任何帮助,我将不胜感激。

【问题讨论】:

  • Mysql 和 sql server 是两个不同的东西。

标签: sql sql-server


【解决方案1】:

为 SQL Server 尝试类似的操作。

UPDATE dbo.ADDRESS
SET 
    ADDRESS.CUSTCHAR5 = FIRST_NAME + LAST_NAME,
    ADDRESS.CUSTCHAR6 = EMAIL,
    ADDRESS.CUSTMEMO1 = TEL1 
FROM CUST 
WHERE ADDRESS.CUST_CODE = CUST.CUST_CODE
    AND CUST.CATEGORY_CODE = 'SR'
    AND ADDRESS.CUSTCHAR5 IS NULL
    AND ADDRESS.EMAIL = @email

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    • 1970-01-01
    • 2014-07-20
    相关资源
    最近更新 更多