数据库常见问题汇总:
1.错误:Subquery returns more than 1 row 的解决办法
以MySQL为例:
1.错误:Subquery returns more than 1 row
数据库查询提示 错误:Subquery returns more than 1 row
产生原因:子查询结果多于一行,即子查询中查询的结果多于一个解决办法:
    解决办法:在子查询条件语句
    
     
      后加limit 1
     
    
    ,或者 在子查询
    
     
      前加关键字any或 some 或 in(in的用法稍有不同)
     
    
   
例子:
首先有两个数据库表Table1 和Table2
     
   
以上数据库及内容中
    
     第一条数据库语句:
    
   
select colums1_1,colums1_3 from table1 where table1.colums1_2=(Select colums2_2 From table2 Where table2.colums2_2=’不重复的值’)
    查询结果
     
   
    
     第二条数据库语句不报错:
    
   
select colums1_1,colums1_3 from table1 where table1.colums1_2=(Select colums2_2 From table2 Where table2.colums2_2=’其他值’)
    查询结果
     
   
    
     第三条数据库语句
     
      报错
     
    
    :(错误:Subquery returns more than 1 row)
   
    select colums1_1,colums1_3 from table1 where table1.colums1_2=(Select colums2_2 From table2 Where table2.colums2_2=’
    
     
      重复的值
     
    
    ‘)
   
    这条语句之所以报错事 子查询(Select colums2_2 From table2 Where table2.colums2_2=’重复的值’)中查到的
    
     
      数据有多条
     
    
    ,
   
这就导致母查询等号后为非基础变量而报错,
    
    
    
     第四条数据库语句不报错
    
    :(基于第三条数据库语句 在子查询
    
     
      前加关键字any或 some 或 in(in的用法稍有不同)
     
    
    )
   
    select colums1_1,colums1_3 from table1 where table1.colums1_2=
    
     
      any
     
    
    (Select colums2_2 From table2 Where table2.colums2_2=’重复的值’)
   
或者数据库命令:
    select colums1_1,colums1_3 from table1 where table1.colums1_2 =
    
     
      some
     
    
    (Select colums2_2 From table2 Where table2.colums2_2=’重复的值’ )
   
或者数据库命令:
    select colums1_1,colums1_3 from table1 where table1.colums1_2
    
     
      in
     
    
    (Select colums2_2 From table2 Where table2.colums2_2=’重复的值’ )
   
    以上三条数据库命令查询结果都是
     
   
    其中关键字
    
     
      any
     
    
    的意思是任意一个的意思,此处数据库命令中为选出子查询字段中的任意一个
   
    关键字
    
     
      some
     
    
    的意思与关键字
    
     
      any
     
    
    的意思相同。
   
    关键字
    
     
      in
     
    
    的目前看来相当于 =any。
   
    
     第五条数据库语句不报错(推荐)
    
    : (基于第三条数据库语句 在子查询条件语句
    
     
      后加limit 1
     
    
    )
   
    select colums1_1,colums1_3 from table1 where table1.colums1_2=(Select colums2_2 From table2 Where table2.colums2_2=’重复的值’
    
     
      limit 1
     
    
    )
   
    查询结果
    
    其中
    
     
      Limit 1
     
    
    的意思是只显示子查询查出来的第一条记录
   
方法另外Limit 1 可以单独测试如下两个截图对比可知 Limit 1 的作用为 取查出的第一个值
     
   
     
   
如果是Limit 10 则意思是取查出来的前 十个值,同样 limit 2,10为取第二个值到第十个值
    如有疑问,请留言
    
    如有错误,请指正
    
    与君共勉,望共同进步!
   
 
