数据库常见问题汇总:
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为取第二个值到第十个值
如有疑问,请留言
如有错误,请指正
与君共勉,望共同进步!