2013-12-16 42 views
2

基於截止值I有兩個表,SQL查詢返回結果以陣列的PostgreSQL

Table1 
id - BIGINT 
otherKey - VARCHAR(45) <---Unique 

Table2 
table1ID - BIGINT 

在表2的table1ID字段是相同的值在表1的ID字段。

我有一個數組包含與表2中字段otherKey相對應的值。

myArray = {'key1', 'key2', 'key3'} 

我想返回myArray中存在otherKey值的所有Table2行。我有:

SELECT * FROM Table2 WHERE (SELECT id FROM Table1 WHERE otherKey = ANY(myArray)) 

但我知道用「=」,是指子查詢不能返回多個結果。

任何建議將是偉大的!

+0

你只是在尋找'WHERE table1id IN(... subquery ...)'? –

+0

哇,是的,我想我是,如果你想讓它成爲答案,我會接受它。 –

回答

1

如果您希望外部子查詢匹配來自內部子查詢的多行,那麼equals就不能勝任這項工作。

這就是他們發明IN的原因。

SELECT * FROM Table2 WHERE table1id IN (SELECT ...)