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

postgresqlで整数を集約する方法は?

    select array_agg(4) 行のセット(実際には1行の行のセット)を返します。したがって、クエリ

    select *
    from b
    where b.id = any (select array_agg(4))  -- ERROR
    

    整数(b.id)を行の値(integer []型の列が1つある)と比較しようとします。エラーが発生します。

    これを修正するには、(整数の配列ではなく)整数を返すサブクエリを使用する必要があります:

    select *
    from b
    where b.id = any (select unnest(array_agg(4)))
    

    または、select array_agg(4)の結果の列名を配置することもできます。 anyの引数として 例:

    select *
    from b
    cross join (select array_agg(4)) agg(arr)
    where b.id = any (arr)
    

    または

    with agg as (
        select array_agg(4) as arr)
    select *
        from b
        cross join agg
        where b.id = any (arr)
    

    より正式には、最初の2つのクエリはANYを使用します フォームの:

    expression operator ANY (subquery)
    

    そして他の2つは使用します

    expression operator ANY (array expression)
    

    ドキュメントに記載されているように:9.22.4。いずれか/一部 および9.23.3。 ANY / SOME(配列) 。



    1. LinuxのAzureKeyVaultで保護されたデータの使用

    2. 列の違いを取得するには、ユーザーごとに最新の2つの行を選択します(MySQL)

    3. WM_CONCAT関数に相当するSQLServer

    4. phpを使用してjson配列をmysqlデータベースに挿入する方法