SQL 初学者经常踩的坑之一,单行子查询用成多行的。ORA-01427这个错误就挺典型的,意思是你本来只该返回一条数据,结果却搞出了好几条,SQL 直接报错。这个资源比较清楚地了错误的语句,还列出了子查询返回的多行值,比如 800、950、1300 那几个,让人一看就懂哪里出了问题。
文中建议把=
换成IN
,这点挺关键。因为=
只能接受一个值,子查询返回多个结果时,就得用IN
来。不然 SQL 可不会手下留情哦。像这种细节问题,初学时容易忽略,早点学会省不少事。
顺手也整理了不少相关资源,比如怎么用ANY
、EXISTS
来多行子查询,还有专门给初学者看的多行子查询,挺适合配套看看。嗯,想搞明白GROUP BY
和子查询怎么配合使用的,别错过这些资料。
如果你正好在学Oracle SQL
,或者面试总被卡在子查询这块,可以看看这些链接练练手,理解错在哪,比背语法有用多了。