有二个表  
表一
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替换太麻烦了。

解决方案 »

  1.   

    LZ是想换keywordpkid里的1都换成2
    比如202 换成101~?
      

  2.   

    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 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;
      

  3.   

    -------------------------------------
    --  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 行受影响)*/
      

  4.   

    有这么复杂吗?大家都不懂,我觉得很简单啊,我就是不会写。不是换imageinfopkid里的值,这里面是连接另一个表的,我只是想update keyimagerelate set keywordpkid='1' where keywordpkid='2'   我每次都要通过 中文关键词“中国”之类 查出keywordpkid 在这么替换。我现在就是想 直接 用关键字 “中国的”  “中国”写在语句里 就完成了上面的结果
      

  5.   

    我不要换 keywordinfo 里的东西,那里面每一个词都是唯一的。
      

  6.   


    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
    ----*/
      

  7.   

    -- =========================================
    -- -----------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
    -------*/
      

  8.   

    这可以吗?我完全看不懂这种,我只能看懂简单的,不过这种,如果要想换其他的词可以吗,  比如,我想吧keyimagrelate 里,关键词是“小孩”的keywordpkid换成“儿童”的keywordpkid,可以吗?干嘛还要create table 还有varchar(8), 中国,中国的什么的,要是换别的词怎么办?