![](/img/trans.png)
[英]SQL Server: update a field with divided and multiplied values from other field on the same table
[英]SQL Server - Update field in all table records, using a field from the same table and values from other table
我有这种情况:
表格Territory
ID (int) - CODE (varchar) - NAME (varchar)
数据:
1 - GB - UNITED KINGDOM
2 - GB - ISLE OF MAN
3 - GB - NORTHERN IRELAND
4 - PT - PORTUGAL
5 - DE - GERMANY
6 - DE - HELGOLAND ISLAND
表格Rules
:
ID (int) - TERRITORY_CODES (varchar) - TERRITORY_IDS (varchar)
1 - 'GB,PT' - NULL
2 - 'DE,PT' - NULL
我知道第二张表不应该是这样,但是我没有选择更改它。
我想用表TERRITORY
的ID填充TERRITORY_IDS
列,并用逗号分隔。 例如:
表格Rules
ID (int) - TERRITORY_CODES (varchar) - TERRITORY_IDS (varchar)
1 - 'GB,PT' - '1,4'
2 - 'DE,PT' - '5,4'
每个地区代码有多个ID,但是每个地区表只需要一个ID,可以是第一个,没关系。
您想要做的是一个坏主意 。 知道这是一个坏主意是一件好事。 但是对于那些阅读此问题并且不理解为什么不好的人,这违反了第一范式(1NF)原理 。 这是所有列都应该是原子的,这意味着它们仅包含1个值和1个值。
让我们详细了解如何进行合并以进行救援。 由于我不知道为什么将'gb,pt'
和'de,pt'
进行分组,因此我没有将其包装在游标中以遍历整个表格。 但是您可以轻松地将其包装在光标中,并为您完成整个表的内容。
DECLARE @TERRITORY_Ids varchar(100)
SELECT @TERRITORY_Ids = COALESCE(@TERRITORY_Ids+ ', ', '') +
Id
FROM table_terrytory
WHERE code in ('gb','pt')
INSERT INTO table_rules
SELECT 'gb,pt',@TERRITORY_Ids
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.