SQL SERVER2005 下,这种SQL语句怎么也提示“子查询返回的值不止一个”这个错误呢?UPDATE KCCKD1 SET KCCKD1_KCJZ='0',KCCKD1_KCJZSJ=' ',KCCKD1_KCXM =' ' WHERE exists (SELECT DISTINCT JZ_LSBH FROM #CKJZCK53 WHERE JZ_YXJZ='1')

解决方案 »

  1.   

    你这个WHERE跟前面的UPDATE的表有关系吗?
      

  2.   

    使用 EXISTS 的子查询
    使用 EXISTS 关键字引入一个子查询时,就相当于进行一次存在测试。外部查询的 WHERE 子句测试子查询返回的行是否存在。子查询实际上不产生任何数据;它只返回 TRUE 或 FALSE 值。使用 EXISTS 引入的子查询语法如下:WHERE[NOT]EXISTS(subquery)下面的查询查找所有出版商业书籍的出版商的名称:USE pubs
    SELECT pub_name
    FROM publishers
    WHERE EXISTS
       (SELECT *
       FROM titles
       WHERE pub_id = publishers.pub_id
          AND type = 'business')下面是结果集:pub_name
    --------------------
    New Moon Books
    Algodata Infosystems(2 row(s) affected)若要确定该查询的结果,请按照顺序考虑每个出版商的名称。该值是否会使子查询至少返回一行?换句话说,该值是否会使存在测试的计算值为 TRUE?在此例中,第一个出版商的名称为 Algodata Infosystems,标识号为 1389。titles 表中是否有 pub_id 为 1389 并且 type 为 business 的行?如果有,那么 Algodata Infosystems 应为所选值之一。对其它每个出版商名称重复相同的过程。注意,使用 EXISTS 引入的子查询在以下几方面与其它子查询略有不同: EXISTS 关键字前面没有列名、常量或其它表达式。
    由 EXISTS 引入的子查询的选择列表通常几乎都是由星号 (*) 组成。由于只是测试是否存在符合子查询中指定条件的行,所以不必列出列名。 
    由于通常没有备选的、非子查询的表示法,所以 EXISTS 关键字很重要。尽管一些使用 EXISTS 表示的查询不能以任何其它方法表示,但所有使用 IN 或由 ANY 或 ALL 修改的比较运算符的查询都可以通过 EXISTS 表示。 以下是使用 EXISTS 和等效的备选方法的查询示例。 有两种方法可以找到与出版商住在同一城市中的作者:USE pubs
    SELECT au_lname, au_fname
    FROM authors
    WHERE city =ANY
       (SELECT city
       FROM publishers)
    -- Or
    USE pubs
    SELECT au_lname, au_fname
    FROM authors
    WHERE exists
       (SELECT *
       FROM publishers
       WHERE authors.city = publishers.city)下面是任一查询的结果集:au_lname         au_fname
    --------         --------
    Carson         Cheryl
    Bennet         Abraham(2 row(s) affected)以下两个查询查找由位于以字母 B 开头的城市中的任一出版商出版的书名:USE pubs
    SELECT title
    FROM titles
    WHERE pub_id IN
       (SELECT pub_id
       FROM publishers
       WHERE city LIKE 'B%')
    — 或
    USE pubs
    SELECT title
    FROM titles
    WHERE EXISTS
       (SELECT *
       FROM publishers
       WHERE pub_id = titles.pub_id
          AND city LIKE 'B%')下面是任一查询的结果集:title
    ----------------------------------------------------
    The Busy Executive's Database Guide
    Cooking with Computers: Surreptitious Balance Sheets
    You Can Combat Computer Stress!
    Straight Talk About Computers
    But Is It User Friendly?
    Secrets of Silicon Valley
    Net Etiquette
    Is Anger the Enemy?
    Life Without Fear
    Prolonged Data Deprivation: Four Case Studies
    Emotional Security: A New Algorithm(11 row(s) affected)
      

  3.   

    UPDATE KCCKD1 SET KCCKD1_KCJZ='0',KCCKD1_KCJZSJ=' ',KCCKD1_KCXM =' ' WHERE exists (SELECT 1 FROM #CKJZCK53 WHERE JZ_YXJZ='1') 
      

  4.   


    if exists(SELECT  1 FROM #CKJZCK53 WHERE JZ_YXJZ='1')
    begin
    UPDATE KCCKD1 
    SET KCCKD1_KCJZ='0',KCCKD1_KCJZSJ=' ',KCCKD1_KCXM =' ' 
    end
      

  5.   

    还不如改成这样
    if exists(SELECT  1 FROM #CKJZCK53 WHERE JZ_YXJZ='1')
    begin
    UPDATE KCCKD1 
    SET KCCKD1_KCJZ='0',KCCKD1_KCJZSJ=' ',KCCKD1_KCXM =' ' 
    end