表1 TradeKeywords
Keyword Amount  ...表2 News
NewsId Title Content ...需求是统计TradeKeywords表里Keyword在新闻表里出现的次数,单个词 SELECT COUNT(0) FROM News WHERE Title LIKE '%防盗门%',表循环就不会了,还有就是如何更新得到的统计次数到Amount字段中

解决方案 »

  1.   

    select sum(case when charindex('关键词',News)>0 then 1 else 0 end) as 次数 from News
      

  2.   

    关键词不是常量,是TradeKeywords的Keyword列
      

  3.   

    创建全文索引,使用containtable亦可。
      

  4.   

    楼主问题不明确,
    如果关键词在一个新闻中出现了多次,这个要不要算在出现的记录次数里面,如果这个要计算,那就很麻烦了。如果不算,那简单。select Keyword,count(*)
    from TradeKeywords join News on charindex(TradeKeywords ,Title)>0
    group by Keyword
      

  5.   

    不需要进行多次计算,你写的语句可行,如何将结果更新到Amount字段中?
      

  6.   

    update TradeKeywords
    set Amount=(select count(*)
    from TradeKeywords join News on charindex(TradeKeywords ,Title)>0)试试,没有测试
      

  7.   

    不行,没指定条件。
    消息 512,级别 16,状态 1,第 1 行
    子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
      

  8.   

    update TradeKeywords
    set Amount=(select count(*)
    from News on charindex(TradeKeywords ,Title)>0)试试,如果还不行,你可以先把统计结果放到一个临时表中,然后再进行更新