2017-09-23 96 views
0

我不知道如何解釋這個問題,但前提是我有一個表,主鍵由兩列定義:rowcol。我也想查詢許多單獨的列,這是我的問題發揮的地方。如何在Postgres中使用WHERE語句和OR組合數組?

如果我有一個簡單的列名爲id,我將能夠做一個子句,如WHERE id=ANY($1)其中$1是一個整數數組。但是,對於由兩列組成的主鍵,我無法做到這一點。

WHERE row=ANY($1) AND col=ANY($2)給我一個我想要的區域,但不是我需要的確切的一組元組。現在我正在生成一個有很多條件的模板查詢字符串,例如:

WHERE row=$1 AND col=$2 OR 
     row=$3 AND col=$4 OR ... 

如何避免生成此「查詢模板」?我不認爲這是一個非常優雅的解決方案,但它是我現在的解決方案。任何有識之士將不勝感激!

+1

你就不能'WHERE ARRAY [行,列] = ANY($ 1)'其中'$ 1'是整數數組的數組? – melpomene

+0

這是一件事嗎?如果是這樣,我會嘗試一下! – DonutGaz

回答

1
where (row,col) = any(array[(1,2),(3,4)]) 

where (row,col) in ((1,2),(3,4)) 
+0

謝謝,在句法上花了一段時間。我已經用了很多Postgres,但還不足以知道這些細節。 – DonutGaz