nodejs中mysql子查询返回多行结果怎么处理

2 02 2 年,我在某城市的一家小公司,负责维护数据库。
当时接到一个任务,优化一个SQL查询,具体是这句话:
分隔符$$ CREATE DEFINER=root@localhost PROCEDURE Select_bad() BEGIN select id, name,age, sex,punch1 from test0 where id = (select id from test1 where flag = 0);结束$$
当我看到这个查询时我很困惑。
这个东西的写法有点绕,而且肯定不是很有效。
后来我意识到这个查询实际上是在表test0中查找与表test1 中标志为0的ID具有相同ID的记录。
我当时就想,把等号换成in不是很简单吗?
所以我把它改成这样:
从 id 所在的 test0 中选择 id、姓名、年龄、性别、punch1 (从 test1 中选择 id,其中 flag = 0);
这次的查询语句就简单多了。
我尝试运行它,嘿,它真的很快。
我当时还挺自豪的,觉得自己的小聪明用在了该用的地方。
后来我有时会想,这种优化其实很基础,但有时简单的灵光一现就能解决问题。

mysql连表查询报错:Subquery returns more than 1 row

如果超过一行会报错吗?只检查一件事,不要检查太多。

两种方法,视情况而定。

1 .添加限制1 例如: SELECT Kid_id FROM tl_player WHERE id=(SELECT player_id FROM tl_player_travel_user_city WHERE city_id=1 AND status=2 ) LIMIT 1 适合于单一元素的控制。

2 添加任意关键字 例如: SELECT FROM tl_order WHERE member_id=any(SELECT member_id FROM tl_kid WHERE id=any(SELECT Kid_id FROM tl_player WHERE id=any(SELECT player_id FROM tl_player_travel_user_city WHERE city_id=1 ) AND status=2 g)2 s)goods_id=1 3 ) AND status=0 适合检查多个项目。

由您决定哪一个适合您。