【问题标题】:SQL Server UPDATE column value from another table's column valuesSQL Server UPDATE 来自另一个表的列值的列值
【发布时间】:2019-05-08 02:40:02
【问题描述】:

我有两张桌子:

T1

CODE  FULL_NAME

T2

CODE   FIRST_NAME   LAST_NAME

所有列的类型均为NVARCHAR

T1 中的一些CODE 单元格是空的,我需要从T2 获取它们。我需要在T1 中使用FULL_NAME 信息并在T2 中的LAST_NAMEFIRST_NAME 列中搜索。这样的UPDATE怎么写?

到目前为止我写的是:

UPDATE IMPORT_DATA.RDBS_DATA_STORAGE
SET child_iin = pd.iin
FROM IMPORT_DATA.RDBS_DATA_STORAGE
INNER JOIN nedb.PERSONAL_DATA pd ON child_iin LIKE 'N' + '%' + pd.LAST_NAME + '%' + ' ' + 'N' + '%' + 
pd.FIRST_NAME + '%'

WHERE LEN(child_iin)

但不成功。

编辑:

我不能只使用WHERE t1.FULL_NAME=t2.FIRST_NAME + ' ' + t2.LAST_NAME,因为我可以有t1.FULL_NAME = 'Jorsh Arthur Weasley't1.FIRST_NAME='William't2.LAST_NAME='Weasley' 这样的场景。

还有。

我需要使用N,因为正如我所说,这些列的类型是NVARCHAR,并且我在那里有非ASCII字母,例如:

SELECT * FROM T1 WHERE CODE = 'Неважно' 不返回任何内容,要解决此问题,我必须添加 NSELECT * FROM T1 WHERE CODE = N'Неважно' 返回一行。

【问题讨论】:

  • “但不成功。” 这是什么意思?你有没有收到错误,它没有按预期工作,你能详细说明一下吗?
  • @Larnu 请看一下编辑

标签: sql sql-server select sql-update


【解决方案1】:

你可以试试下面

UPDATE T1 SET T1.CODE = T2.Code 
From T1
Join T2 on t1.FULL_NAME= t2.FIRST_NAME + ' ' +t2.LAST_NAME

【讨论】:

    【解决方案2】:

    我认为你的需求很简单:

    UPDATE t1
        SET t1.code = t2.code
    FROM t1 INNER JOIN
         t2
         ON t1.FULL_NAME = t2.FIRST_NAME + ' ' + t2.LAST_NAME
    WHERE t1.code IS NULL;
    

    【讨论】:

    • 我不能使用t1.FULL_NAME = t2.FIRST_NAME + ' ' + t2.LAST_NAME我需要使用LIKE因为我可以有这样的场景:FULL_NAME:Jorsh William WeasleyFIRST_NAME:Jorsh,LAST_NAME: Weasley。你能更新你的答案吗?
    【解决方案3】:

    答案如下:

    UPDATE IMPORT_DATA.RDBS_DATA_STORAGE
    SET child_iin = pd.iin
    FROM IMPORT_DATA.RDBS_DATA_STORAGE
           INNER JOIN nedb.PERSONAL_DATA pd
             ON child_iin LIKE '%' + pd.LAST_NAME + '%' + ' ' + '%' + pd.FIRST_NAME + '%'
    WHERE LEN(child_iin) < 1;
    

    N 是不必要的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-05
      • 1970-01-01
      • 2014-06-30
      • 2010-09-15
      • 1970-01-01
      • 1970-01-01
      • 2015-02-12
      相关资源
      最近更新 更多