1. ホーム
  2. postgresql

[解決済み] Postgresql Select rows where column = array (列 = 配列)

2022-03-06 03:09:45

質問

これは、私がやろうとしていることの要約です。

$array[0] = 1;
$array[1] = 2;

$sql = "SELECT * FROM table WHERE some_id = $array"

もちろん、構文上の問題はありますが、これは私がやりたいことで、その方法を示しているものはまだ見つかっていません。

今のところ、こんな感じの予定です。

foreach($idList as $is)
    $where .= 'some_id=' . $id . ' OR';
endforeach

$sql = "SELECT * FROM table WHERE " . $where;

つまり、PostgreSQLでは検索に配列を使用するサポートがあるのでしょうか、それとも私のソリューションと同様のことをしなければならないのでしょうか?

どのように解決するのですか?

SELECT  *
FROM    table
WHERE   some_id = ANY(ARRAY[1, 2])

または ANSI -compatible となります。

SELECT  *
FROM    table
WHERE   some_id IN (1, 2)

ANY の構文は、配列全体を束縛変数で渡すことができるため、好ましいとされています。

SELECT  *
FROM    table
WHERE   some_id = ANY(?::INT[])

配列の文字列表現を渡す必要があります。 {1,2}