数据库常见问题汇总Subquery returns more than 1 row

  • Post author:
  • Post category:其他


数据库常见问题汇总:

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为取第二个值到第十个值

如有疑问,请留言

如有错误,请指正

与君共勉,望共同进步!



版权声明:本文为shengmingzaiyuxuexi原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。