当我尝试执行select语句时,我总是收到以下错误:
错误:用作表达式的子查询返回的多行
只有只有一个结果才有效。为什么以及如何修复?
SELECT name from person p where
id = ( select prs from leader
where age(leader.lastcourse) > '1 year');
答案 0 :(得分:5)
您正尝试从似乎正在返回多个ID的选择中分配一个特定ID。 OrbMan的解决方案将从子查询中随机获取第一个ID。如果您想要满足子查询条件的所有ID,
SELECT name from person p where
id IN ( select prs from leader
where age(leader.lastcourse) > '1 year');
Mark使用JOIN而不是子查询的方法也有效。
答案 1 :(得分:4)
说一个整数等于或不等于包含两行的结果集是没有意义的。要做你想做的事,你可以选择IN,EXISTS或JOIN。以下是如何通过加入来实现的:
SELECT name
FROM person p
JOIN leader
ON p.id = leader.prs
where age(leader.lastcourse) > '1 year'