子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。 
说得很明确了,就是不能有带多个字段

解决方案 »

  1.   

    肯定是你的字查询返回记录数大于1,这样当然没法判断=、!=、<、<=、>、>= 了。
    建议你把子查询语句剥离出来查询一下。
      

  2.   

    发生这样的错误在于像这样的语句 
    select * from table1 where 字段1=(select 字段X from table2) 而 select 字段X from table2 返回的记录数不止一个所以'='不知道要和哪一个值进行比较,要避免这样的错误,请用in
      

  3.   

    这样的错误经常发生在这样的语句中:
    select * from table1 where 字段1=(select 字段 from table2 where...)
    但是select 字段 from table2 where... 不止返回一个值,所以'='不知道要和哪一个值比较
    要避免这样的错误,请用in
      

  4.   

    出现这样的错误,再我这里,程序员要接受枪毙一样的惩罚。这个问题体现了基本“理念”就错了(不是知识少的问题),所以非常可怕。SQL命令是面向记录集合的4GL语言,不是面向单个数据的3GL语言。