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

1つのテーブルから1つの行に複数の行を追加します

    GROUP_CONCATという他の回答に同意します カンマ区切りの値を分割するPHPと一緒に使用するのがおそらく最善の方法ですが、他の理由でPure SQLを介して提案した出力が必要な場合は、次のいずれかの方法をお勧めします。

    1。自己参加

    SELECT  t1.Name, 
            MIN(t1.Subject) AS Sub1,
            MIN(t2.Subject) AS Sub2,
            MIN(t3.Subject) AS Sub3,
            MIN(t4.Subject) AS Sub4
    FROM    Students t1
            LEFT JOIN Students T2 
                ON t1.Name = t2.Name 
                AND t2.Subject > t1.Subject
            LEFT JOIN Students T3 
                ON t2.Name = t3.Name 
                AND t3.Subject > t2.Subject
            LEFT JOIN Students T4 
                ON t3.Name = t4.Name 
                AND t4.Subject > t3.Subject
    GROUP BY t1.Name;
    

    2。 ROW_NUMBERタイプ関数を使用して集計する

    SELECT   Name,
             MAX(IF(RowNum = 1,Subject, NULL)) AS Sub1,
             MAX(IF(RowNum = 2,Subject, NULL)) AS Sub2,
             MAX(IF(RowNum = 3,Subject, NULL)) AS Sub3,
             MAX(IF(RowNum = 4,Subject, NULL)) AS Sub4
    FROM     (    SELECT   Name,
                           Subject,
                           @r:= IF(@Name = Name, @r + 1, 1) AS RowNum,
                           @Name:= Name AS Name2
                  FROM    Students,
                          (SELECT @Name:='') n,
                          (SELECT @r:= 0) r
                  ORDER BY Name, Sno
              ) t
    GROUP BY Name
    


    1. Postgresql UUIDはHibernateでサポートされていますか?

    2. Kubernetesを使用したPostgreSQLのデプロイ

    3. コマンドラインを介してMySqlに大きなSQLファイルをインポートする

    4. フィールドの最初の2文字でSQLを並べ替える