Sql 基于另一个表中的数据更新一个表中的列

Sql 基于另一个表中的数据更新一个表中的列,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有两张桌子: 暖通空调设置 ID (int) SuiteType (varchar(50)) Suite (varchar(1000)) 和套房 ID (int) SuiteNumber (varchar(10)) SuiteType (varchar(50)) Hvac\u设置中的示例数据表: ID | SuiteType (description) | SuiteNumbers 1 | Helmodul A suite A | 103A,104A (separated

我有两张桌子:

暖通空调设置

ID (int)
SuiteType (varchar(50))
Suite (varchar(1000))
套房

ID (int)
SuiteNumber (varchar(10))
SuiteType (varchar(50))
Hvac\u设置中的示例数据
表:

ID | SuiteType (description)  | SuiteNumbers
1  | Helmodul A suite A       | 103A,104A (separated by comma, nn suites)
2  | Helmodul A suite A m/hems| 316A,412A,503A,504A,505B,509A,510A 
3  | Helmodul A suite A m/sov | 217A
我希望编写一个SQL查询,用
Hwac\u Setup
表中匹配的
suitembers
中正确的
SuiteType
数据更新
SuiteType
表中的
SuiteType

更新后
套件
表格的样本数据

ID |    SuiteNumber | SuiteType
---+----------------+---------------------------    
1  |    103A        | Helmodul A suite A
2  |    104A        | Helmodul A suite A
3  |    316A        | Helmodul A suite A m/hems
..
..
n  |    217A        | Helmodul A suite A m/sov
有人能帮我解释一下语法吗?

试试这个:

set nocount on 

if object_id ('tempdb..#Hvac_Setup') is not null drop table #Hvac_Setup

create table #Hvac_Setup
    (
    ID int,
    SuiteType varchar(50),
    SuiteNumbers varchar(1000)
    )

if object_id ('tempdb..#Suites') is not null drop table #Suites

create table #Suites
    (
    ID int,
    SuiteNumber varchar(10),
    SuiteType varchar(50)
    )

insert #Hvac_Setup values 
    (1, 'Helmodul A suite A', '103A,104A'),
    (2, 'Helmodul A suite A m/hems', '316A,412A,503A,504A,505B,509A,510A'),
    (3, 'Helmodul A suite A m/sov', '217A')

select * from #Hvac_Setup

insert #Suites values
    (1,'103A', 'Helmodul A suite A'),
    (2,'104A', 'Helmodul A suite A'),
    (3,'316A', 'Helmodul A suite A m/hems')

select * from #Suites

update #Suites 
set SuiteType = hs.SuiteType
from #Suites s
inner join #Hvac_Setup as hs 
on hs.SuiteNumbers like '%'+ s.SuiteNumber +'%'

select * from #Suites

顺便说一句:你应该试着用一种前后一致的方式来写你的问题(表中的Suite或SuiteNumbers?)。

你需要一个字符串拆分器。我个人的选择来自Jeff Moden和sql server central的社区。这里还有其他一些很好的选择。最大的问题是您的数据没有标准化。存储分隔数据违反1NF,并会造成令人难以置信的痛苦。sql server的版本是什么。2016有一个内置的功能,否则你将不得不建立自己的ie上面的评论我。