sql >> データベース >  >> RDS >> PostgreSQL

'ANY'を含むPostgreSQLクエリが機能していません

    ALLを使用したい 、ANYではありません 。細かいマニュアルから:

    9.21.3。 ANY / SOME(配列)

    expression operator ANY (array expression)
    

    [...]左側の式が評価され、指定された演算子を使用して配列の各要素と比較されます。 、ブール結果を生成する必要があります。 ANYの結果 真の結果が得られた場合は「真」です。

    つまり、これを言うと:

    1 != any(array[1,2])
    

    (1 != 1) or (1 != 2)なので、trueになります。 本当です。 ANY 本質的にはOR オペレーター。例:

    => select id from (values (1),(2),(3)) as t(id) where id != any(array[1,2]);
     id 
    ----
      1
      2
      3
    (3 rows)
    

    ALLを見ると 、表示されます:

    9.21.4。 ALL(配列)

    expression operator ALL (array expression)
    

    [...]左側の式が評価され、指定された演算子を使用して配列の各要素と比較されます。 、ブール結果を生成する必要があります。 ALLの結果 すべての比較でtrueが得られた場合、は「true」です...

    だから私たちがこれを言うなら:

    1 != all(array[1,2])
    

    (1 != 1) and (1 != 2)なので、falseになります。 はfalseであり、ALL 本質的にはAND オペレーター。例:

    => select id from (values (1),(2),(3)) as t(id) where id != all(array[1,2]);
     id 
    ----
      3
    (1 row)
    

    配列内のすべての値を除外する場合は、ALLを使用します :

    select "Ticket_id"
    from "Tickets"
    where "Status" = 1
      and "Ticket_id" != all(array[1,2,3])
    limit 6
    


    1. 外部キーとして列を追加すると、外部キー制約で参照されているERROR列が存在しません

    2. 主キー違反エラーの後にトランザクションを続行する

    3. SQLデータをあるテーブルから別のテーブルに移動する

    4. 多言語データベース設計のベストプラクティス