需求是遍历TagList的每个纪录,来判断表Tags的TagName列中是否存在相同纪录,如果存在就更新TagCount,如果不存在就Insert。 例子:
需要进行遍历的表TagList的内容
select * FROM TagList 
结果如下 
Name(列名) 
asp 
asp.net 
php 
jsp 
py 
... 判断是否更新或插入的代码(@TagName是为了表达清楚放上去,代表当前TagList的一个记录):
if not exists (select 1 from Tags where TagName=@TagName) 
insert Tags(TagName,TagCount) values(@TagName,1) 
else 
update Tags set TagCount=TagCount+1 where TagName=@TagName

解决方案 »

  1.   


    trigger:instead of insert
      

  2.   

    insert into tags select name , count(*) cnt from taglist where name not in (select tagname from tags) group by nameupdate tags 
      set tagcount = n.cnt 
    from tags m , (select name , count(*) cnt from taglist group by name) n
    where m.tagname = n.name
      

  3.   

    update tags 
      set tagcount = n.cnt 
    from tags m , (select name , count(*) cnt from taglist group by name) n
    where m.tagname = n.name这个不对。。
    我发的这段是正常的
    if not exists (select 1 from Tags where TagName=@TagName) 
    insert Tags(TagName,TagCount) values(@TagName,1) 
    else 
    update Tags set TagCount=TagCount+1 where TagName=@TagName问题是如何遍历每个TagName,然后对它进行判断
      

  4.   

    方向反了,先update ,再insertupdate tags 
      set tagcount = n.cnt 
    from tags m , (select name , count(*) cnt from taglist group by name) n
    where m.tagname = n.nameinsert into tags select name , count(*) cnt from taglist where name not in (select tagname from tags) group by name不需要遍历.
      

  5.   

    还是不对,逻辑是,如果存在相同的TagName则在TagCount上+1