You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

我的SQL SELECT查询仅返回1条结果,原因是什么?

问题原因及解决方法

你的查询只返回1条结果,核心问题出在使用=来匹配子查询结果,这种写法要求子查询必须返回恰好1条数据,而你的嵌套子查询刚好每层都只返回1条:

  • 最内层查询SELECT id FROM movies WHERE year = 2004只查到1个2004年的电影ID,说明数据库里2004年的电影只有1部
  • 中间层查询SELECT person_id FROM stars WHERE movie_id = ...基于这个电影ID,只查到1个参演人员的ID,说明这部电影只有1个演员
  • 外层查询匹配这个唯一的人员ID,自然只返回1条结果

如果你的需求是查询所有2004年电影的参演人员,应该把=换成IN,因为IN支持匹配子查询返回的多条结果:

SELECT * FROM people 
WHERE id IN (SELECT person_id FROM stars
            WHERE movie_id IN (SELECT id FROM movies
                              WHERE year = 2004))
ORDER BY birth;

也可以用JOIN写法,逻辑更清晰,还能避免重复数据(加DISTINCT):

SELECT DISTINCT p.* 
FROM people p
JOIN stars s ON p.id = s.person_id
JOIN movies m ON s.movie_id = m.id
WHERE m.year = 2004
ORDER BY p.birth;

内容的提问来源于stack exchange,提问作者148 Yousof Islam Moheb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 20:54:18