UPDATE a
SET a.KeyNum=(SELECT COUNT(b.CI_ID) FROM myTab.dbo.CI_SinKey as b
where CONTAINS(b.SearchKey,a.KeyName)
)
from myKey.dbo.SearchKey as a
where KeyNum=0这个是错误的语句,相信大家可以看懂我的业务需求,我再描述一下
两个库:myKey            myTab
对应表:SearchKey        CI_SinKey 
SearchKey 这里出现字段:KeyNum(关键词匹配数据总量)       KeyName(关键词)
CI_SinKey 这里出现字段:CI_ID(默认ID)        SearchKey(关键词)
业务需求:更新  myKey 库   SearchKey 表  KeyNum为O的记录 的  KeyNum(关键词匹配数据总量)
使  KeyNum=SELECT COUNT(b.CI_ID) FROM myTab.dbo.CI_SinKey as b
where CONTAINS(b.SearchKey,a.KeyName))上面语句提示CONTAINS(b.SearchKey,a.KeyName))中a.KeyName部分出错在线等····急急急~

解决方案 »

  1.   

    [服务器].myTab.dbo.CI_SinKey  写完整看看。 
      

  2.   

    a.KeyName 的结果集不符合contains的格式要求。a.KeyName 是字符型的吧?》
    USE AdventureWorks;
    GO
    SELECT Name
    FROM Production.Product
    WHERE CONTAINS(Name, ' "Mountain" OR "Road" ')
    GO参考。
    具体更多等待高手...
      

  3.   

    --SQL2k5
    UPDATE myKey.dbo.SearchKey
    SET KeyNum=bb.cnt
    FROM myKey.dbo.SearchKey as a
    OUTER APPLY
    (
    SELECT COUNT(b.CI_ID) as cnt 
    FROM myTab.dbo.CI_SinKey b
    WHERE  CONTAINS(b.SearchKey,a.KeyName)
    ) bb
    WHERE KeyNum=0
      

  4.   

    IF OBJECT_ID('[fn_test]') IS NOT NULL
        DROP FUNCTION [fn_test]
    GO
    CREATE FUNCTION [fn_test]
    (@KeyName VARCHAR(8000))
    RETURNS INT
    AS
    BEGIN
    RETURN(
    SELECT COUNT(b.CI_ID) 
    FROM myTab.dbo.CI_SinKey as b
    where CONTAINS(b.SearchKey,@KeyName)
    )
    END
    GOUPDATE myKey.dbo.SearchKey
    SET KeyNum=dbo.[fn_test](KeyName)
    WHERE KeyNum=0try