有如下表
 id    name 1      a
 2      aa
 3      aaa
 4      aaaa
 5      aaaaa比如我想删掉 name长度大于2的 ,使用如下语句为什么都给删了??delete from table1 where exists 
(
  select 1 from table1 where datalengh(name) >2 
 )感觉我对exists理解有问题。

解决方案 »

  1.   

    delete from table1 where len(name)>2
    EXISTS是为true的所以都删掉了。
      

  2.   

    参见联机丛书”使用 EXISTS 关键字引入一个子查询时,就相当于进行一次存在测试。外部查询的 WHERE 子句测试子查询返回的行是否存在。子查询实际上不产生任何数据,它只返回 TRUE 或 FALSE 值。“
      

  3.   

    exists函数return的结果只能是true或false
    #1.select 1 from table1 where datalengh(name) > 2 ,返回的值为1
    #2.delete from table1 where exists(1) = delete from table1
      

  4.   

    楼主你要用这个exists 改成这样delete from table1 where exists  
    (
      select 1 where datalengh(name) >2  
    )
      

  5.   

    DELETE FROM TB WHERE LEN(NAME) > 2/*
    id name
    1 a
    2 aa*/DELETE FROM TB WHERE EXISTS(SELECT 1 FROM TB WHERE LEN(NAME)>2)--Exists 中条件成立(表中Name列含有长度大于2的数据)则,表中数据均被删除了
      

  6.   

    Delete from table where len(ltrim(name))>2