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

postgres selectで、列のサブクエリを配列として返しますか?

    集計関数 を使用します :

    select
        usr_id, 
        name, 
        array_agg(tag_id) as tag_arr
    from users
    join tags using(usr_id)
    group by usr_id, name
    

    または配列コンストラクター サブクエリの結果から:

    select
        u.usr_id, 
        name, 
        array(
            select tag_id 
            from tags t 
            where t.usr_id = u.usr_id
            ) as tag_arr
    from users u
    

    2番目のオプションは単純な1ソースクエリですが、最初のオプションはより一般的であり、関連するテーブルから複数の集計が必要な場合に特に便利です。また、最初のバリアントは、テーブルが大きいほど高速になるはずです。

    パフォーマンスを向上させるために、usr_id 両方のテーブルの列にインデックスを付ける必要があります。通常はusers.usr_id は主キーですが、参照列のインデックスも役立つことを忘れてしまうことがあります。



    1. SQL Server 2008、1つのクエリで異なるWHERE句

    2. PHP/MySQLのマルチレベルメニュー

    3. MySQLパーティショニング:複数のパーティショニングされたテーブルのパフォーマンスが向上します。なんで?

    4. ORA-01756:コードを実行しようとすると、引用符列が正しく終了しません