gpt4 book ai didi

sql - 使用存储在另一个 SQL 表中的值更新列中的部分数据

转载 作者:行者123 更新时间:2023-12-01 05:21:35 24 4
gpt4 key购买 nike

我对 SQL 相当陌生,我正在尝试执行以下操作:

我有一列数据我们称之为CATEGORY,该列中的数据如下:

jack, gill, tommy, jill, jacky, paul, johnny, be, good, tammy, sammy, john



在第二个表中,我有一个条目的映射

第 1 列 Johnny, be, good - 第 2 列 johnny be good
我需要能够为 Johnny, be, good 更新 CATEGORY 中的值至 johnny be good但只有那部分列。我尝试了几件事,以下是我的尝试之一:

这里只是试图选择发生这种情况的行
SELECT * FROM [dbo].[TD_DTV_BV_CATALOGITEMS] a
INNER JOIN
[dbo].[TD_CATEGORYMAP] b ON
a.[COURSE_CATEGORY] LIKE b.[GROUPCATEGORY]

这是我尝试更新列的地方,当然它是无效的。
UPDATE [dbo].[TD_DTV_BV_CATALOGITEMS] a
SET a.COURSE_CATEGORY = REPLACE(a.COURSE_CATEGORY, b.MAPCATEGORY)
INNER JOIN
[dbo].[TD_CATEGORYMAP] b ON
a.[COURSE_CATEGORY] LIKE b.[GROUPCATEGORY]

在此先感谢您的帮助。

最佳答案

假设你使用的是 MSSQL,试试这个

SQL Fiddle

MS SQL Server 2008 架构设置 :

create table t ( 
id int not null identity(1, 1),
category varchar(max)
)

create table map (
col1 varchar(max), col2 varchar(max)
)

insert t (category)
values ('jack, gill, tommy, jill, jacky, paul, Johnny, be, good, tammy, sammy, john'),
('jack, gill, tommy, jill, jacky, paul, Johnny, be, good'),
('Johnny, be, good, tammy, sammy, john')

insert map (col1, col2)
values ('Johnny, be, good', 'johnny be good')

查询 1 :
update t set
category = replace(category, m.col1, m.col2)
from t
join map m on t.category like m.col1 + '%' --in the begining
or t.category like '%, ' + m.col1 + ',%' --in the middle
or t.category like '%, ' + m.col1 --in the end

select * from t

Results :
| ID |                                                                 CATEGORY |
---------------------------------------------------------------------------------
| 1 | jack, gill, tommy, jill, jacky, paul, johnny be good, tammy, sammy, john |
| 2 | jack, gill, tommy, jill, jacky, paul, johnny be good |
| 3 | johnny be good, tammy, sammy, john |

关于sql - 使用存储在另一个 SQL 表中的值更新列中的部分数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16244798/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com