有二个表
表一
keywordinfo 里面有
pkid keyword 二个字段 字段里内容如下1 中国
2 中国的
3 中国文化表二
keyimagerelate 里面有
keywordpkid imageinfopkid 二个字段 字段里的内容如下
1 100
2 101
3 102二个表里面都有很多数据,我主要想update keyimagerelate 这个表。 比如把 keywordpkid 里的 2换成1 现在我想用update keyimagerelate时候 引用 表一里的条件 就是写个语句 我想要把表二里 2换成 1 就直接把“中国
的” 换成 “中国” 就可以了。 这样比较直观。而且我有大量的词,如果查每个词的id替换太麻烦了。
表一
keywordinfo 里面有
pkid keyword 二个字段 字段里内容如下1 中国
2 中国的
3 中国文化表二
keyimagerelate 里面有
keywordpkid imageinfopkid 二个字段 字段里的内容如下
1 100
2 101
3 102二个表里面都有很多数据,我主要想update keyimagerelate 这个表。 比如把 keywordpkid 里的 2换成1 现在我想用update keyimagerelate时候 引用 表一里的条件 就是写个语句 我想要把表二里 2换成 1 就直接把“中国
的” 换成 “中国” 就可以了。 这样比较直观。而且我有大量的词,如果查每个词的id替换太麻烦了。
比如202 换成101~?
keywordpkid = 1
OUTPUT deleted.keywordpkid,inserted.keywordpkid INTO @t
WHERE keywordpkid = 2;
UPDATE C SET
keyword = A.keyword
FROM keywordinfo AS A
JOIN @t AS B
ON A.pkid = B.old_id
JOIN keywordinfo AS C
ON B.new_id = C.pkid;
-- Author : liangCK 梁爱兰
-- Comment: 小梁 爱 兰儿
-- Date : 2009-06-24 19:36:53
-------------------------------------
--> 生成测试数据: @keywordinfo
DECLARE @keywordinfo TABLE (pkid INT,keyword VARCHAR(8))
INSERT INTO @keywordinfo
SELECT 1,'中国' UNION ALL
SELECT 2,'中国的' UNION ALL
SELECT 3,'中国文化'
--> 生成测试数据: @keyimagerelate
DECLARE @keyimagerelate TABLE (keywordpkid INT,imageinfopkid INT)
INSERT INTO @keyimagerelate
SELECT 1,100 UNION ALL
SELECT 2,101 UNION ALL
SELECT 3,102--SQL查询如下:DECLARE @t TABLE(old_id INT,new_id INT)UPDATE @keyimagerelate SET
keywordpkid = 1
OUTPUT deleted.keywordpkid,inserted.keywordpkid INTO @t
WHERE keywordpkid = 2;
UPDATE A SET
keyword = C.keyword
FROM @keywordinfo AS A
JOIN @t AS B
ON A.pkid = B.old_id
JOIN @keywordinfo AS C
ON B.new_id = C.pkid;
SELECT * FROM @keywordinfo
SELECT * FROM @keyimagerelate/*
pkid keyword
----------- --------
1 中国
2 中国
3 中国文化(3 行受影响)keywordpkid imageinfopkid
----------- -------------
1 100
1 101
3 102(3 行受影响)*/
create TABLE keywordinfo (pkid INT,keyword VARCHAR(8))
INSERT INTO keywordinfo
SELECT 1,'中国' UNION ALL
SELECT 2,'中国的' UNION ALL
SELECT 3,'中国文化'
create TABLE keyimagerelate (keywordpkid INT,imageinfopkid INT)
INSERT INTO keyimagerelate
SELECT 1,100 UNION ALL
SELECT 2,101 UNION ALL
SELECT 3,102
go
declare @s1 varchar(8),@s2 varchar(8)
set @s1='中国的'
set @s2='中国'
update keyimagerelate
set keywordpkid=(select pkid from keywordinfo where keyword=@s2)
where keywordpkid=(select pkid from keywordinfo where keyword=@s1)
goselect * from keyimagerelate
/*----------
1 100
1 101
3 102
----*/
-- -----------t_mac 小编-------------
---希望有天成为大虾----
-- =========================================create TABLE keywordinfo (pkid INT,keyword VARCHAR(8))
INSERT INTO keywordinfo
SELECT 1,'中国' UNION ALL
SELECT 2,'中国的' UNION ALL
SELECT 3,'中国文化'
create TABLE keyimagerelate (keywordpkid INT,imageinfopkid INT)
INSERT INTO keyimagerelate
SELECT 1,100 UNION ALL
SELECT 2,101 UNION ALL
SELECT 3,102
go
declare @s1 varchar(8),@s2 varchar(8)
set @s1='中国的'
set @s2='中国'
update keyimagerelate
set keywordpkid=(select pkid from keywordinfo where keyword=@s2)
where keywordpkid=(select pkid from keywordinfo where keyword=@s1)
go
select * from keywordinfo
select * from keyimagerelate /*------------
1 中国
2 中国的
3 中国文化1 100
1 101
3 102
-------*/