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

クエリの結果をPostgreSQLの同じ結果行に追加します-Redshift

    PostgreSQL

    SELECT
      a,
      STRING_AGG('(' || c || ',' || b || ')', ' ; ')
    FROM
      tbl
    GROUP BY
      a;
    

    編集 :9.0より前のバージョン(STRING_AGGが導入されたとき)および8.4より前(ARRAY_AGGが追加されたとき)のPostgreSQLのバージョンでは、独自のカスタム集計関数

    編集2 :8.0より前のバージョン(おそらくAmazonRedshiftはPostgreSQL7.4に基づいている)の場合、$$構文はサポートされていないため、関数本体を引用符で囲み、本文内の引用符をエスケープする必要があります。

    CREATE FUNCTION cut_semicolon(text) RETURNS text AS '
    BEGIN
      RETURN SUBSTRING($1 FROM 4);
    END;
    ' LANGUAGE 'plpgsql' IMMUTABLE;
    
    
    CREATE FUNCTION concat_semicolon(text, text) RETURNS text AS '
    BEGIN
      RETURN $1 || '' ; '' || $2;
    END;
    ' LANGUAGE 'plpgsql' IMMUTABLE;
    
    CREATE AGGREGATE concat_semicolon(
      BASETYPE=text,
      SFUNC=concat_semicolon,
      STYPE=text,
      FINALFUNC=cut_semicolon,
      INITCOND=''
    );
    

    次に、代わりにその集計を使用します。

    SELECT
      a,
      CONCAT_SEMICOLON('(' || c || ',' || b || ')')
    FROM
      tbl
    GROUP BY
      a;
    

    MySQL

    SELECT
      a,
      GROUP_CONCAT(CONCAT('(', c, ',', b, ')') SEPARATOR ' ; ')
    FROM
      tbl
    GROUP BY
      a;
    


    1. SQLServerで単一列にチェック制約を作成する方法-SQLServer/TSQLチュートリアルパート83

    2. PHPはselectステートメントを割り当ててリスト値をドロップダウンします

    3. MySQL複数の行を返すSELECTサブクエリを使用してテーブルにINSERTを実行するにはどうすればよいですか?

    4. json配列をテキスト配列にキャストする方法は?