当我尝试做select语句,我总是得到以下错误:PostgreSQL的子查询问题
ERROR:由作为表达
只有一个子查询返回多行,如果有只一个结果,它的作品。为什么以及如何解决?
SELECT name from person p where
id = (select prs from leader
where age(leader.lastcourse) > '1 year');
当我尝试做select语句,我总是得到以下错误:PostgreSQL的子查询问题
ERROR:由作为表达
只有一个子查询返回多行,如果有只一个结果,它的作品。为什么以及如何解决?
SELECT name from person p where
id = (select prs from leader
where age(leader.lastcourse) > '1 year');
你正试图从一个选择,这似乎是返回多个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而不是子查询的方法也适用。
说一个整数等于或不等于包含两行的结果集是没有意义的。要做你想做的事,你可以在IN,EXISTS或JOIN之间进行选择。这里是你如何可以用加入做到这一点:
SELECT name
FROM person p
JOIN leader
ON p.id = leader.prs
where age(leader.lastcourse) > '1 year'
为什么要有'最高1'? 只有没有它的作品。 – melbic 2010-04-14 20:11:05
@melbic:因为我做了剪切和粘贴错误:-)修复了帖子。 – 2010-04-14 20:25:34