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

Postgres json_aggに列ヘッダーが含まれています-JSONが正しくありませんか?

    有効であるという意味では正しいJSONですが、明らかにあなたが望むものではありません。したがって、答えは「正しい」の定義によって異なります。私たちはあなたが望むものが「正しい」と仮定します。

    uを集約するように要求しています 、列teamの結果セットです 。これは、この情報を結果に追加する必要があることを意味します。 u.teamの集計のみを要求する必要があります 、これは必要なフィールドです。そうすれば、希望する結果が得られます。

    WITH matches as
    (
    select 5 as id, '{"Id":1,"Teams":[{"Name":"TeamA","Players":[{"Name":"AAA"},{"Name":"BBB"}]},{"Name":"TeamB","Players":[{"Name":"CCC"},{"Name":"DDD"}]}],"TeamRank":[1,2]}'::json as match
    union all
    select 6 as id, '{"Id":2,"Teams":[{"Name":"TeamA","Players":[{"Name":"CCC"},{"Name":"BBB"}]},{"Name":"TeamB","Players":[{"Name":"AAA"},{"Name":"DDD"}]}],"TeamRank":[1,2]}' as match
    )
    SELECT json_agg(u.team) FROM (
    SELECT DISTINCT ON (t.team->>'Name') t.team
    FROM   matches m, json_array_elements(m.match->'Teams') t(team)
    ORDER  BY t.team->>'Name', m.id DESC) AS u;
    

    結果:




    1. Oracle SQLで指定された列を選択するのはなぜですか?

    2. MysqlデータベースをPHPフォームで更新する方法についての良いチュートリアルですか?

    3. ローカルデータベース(Mysql)をリモートデータベース(phpmyadmin)に複製します

    4. MySQLAutoIncrementカスタム値