SQL 初学者经常踩的坑之一,单行子查询用成多行的。ORA-01427这个错误就挺典型的,意思是你本来只该返回一条数据,结果却搞出了好几条,SQL 直接报错。这个资源比较清楚地了错误的语句,还列出了子查询返回的多行值,比如 800、950、1300 那几个,让人一看就懂哪里出了问题。

文中建议把=换成IN,这点挺关键。因为=只能接受一个值,子查询返回多个结果时,就得用IN来。不然 SQL 可不会手下留情哦。像这种细节问题,初学时容易忽略,早点学会省不少事。

顺手也整理了不少相关资源,比如怎么用ANYEXISTS来多行子查询,还有专门给初学者看的多行子查询,挺适合配套看看。嗯,想搞明白GROUP BY和子查询怎么配合使用的,别错过这些资料。

如果你正好在学Oracle SQL,或者面试总被卡在子查询这块,可以看看这些链接练练手,理解错在哪,比背语法有用多了。