當我嘗試做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