2014-04-12 20 views
0

我想這個SQL查詢,但它拋出語法錯誤:如何使用IN運算符來連接表?

select * from table join table1 on (table.int_col in table1.int_array_col) 

結束語table1.int_array_col與parenthesises不起作用。它拋出operator does not exist: integer = integer[]錯誤此查詢:

select * from table join table1 on (table.int_col in (table1.int_array_col)) 

,我發現的唯一的解決辦法是任何與更換:

select * from table join table1 on (table.int_col = any (table1.int_array_col)) 

然而, AFAIK IN運營商的表現遠勝於任何運營商。有沒有辦法在JOIN子句中使用IN運算符?如果不可能,這個問題背後的原因是什麼?

+3

什麼是使用'IN'加入的理由? –

+0

@ m.edmondson int_array_col是一個整數數組,包含來自int_col列的值。 – Mehmet

+1

@Mehmet所以問題是你爲什麼使用整數數組,而不是正確的規範化和聯結(關聯)表... –

回答