之前在某删除语句中多层嵌套查询,查出多个值然后报错
delete from cert where keyset_id = (select keyset_id from keyset where sd_id = 'XX');
这里使用的字段赋值使用的=
,只符合select
语句只查出一条记录的情况。
很多情况下查出的记录都是多条,这时会上述语句会报Subquery returns more than 1 row
。
此时当语句中的=
置换成in
时,字段赋值就能指向select
语句查询出的多条记录了,置换后的语句如下:
delete from cert where keyset_id in (select keyset_id from keyset where sd_id = 'XX');