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

ハードコーディングや最小/最大値を使用せずに、複数の子行を1つの行MYSQLに結合します

    以下のクエリを使用できます-

    SELECT a.PK , a.Name, a.Email, 
    SUBSTRING_INDEX(GROUP_CONCAT(i.Image_Name),',',1) AS Image_name_1, 
    IF((LENGTH(GROUP_CONCAT(i.Image_Name)) - LENGTH(GROUP_CONCAT(i.Image_Name SEPARATOR ''))) < 1,'',SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(i.Image_Name),',',2),',',-1)) AS Image_name_2, 
    IF((LENGTH(GROUP_CONCAT(i.Image_Name)) - LENGTH(GROUP_CONCAT(i.Image_Name SEPARATOR ''))) < 2,'',SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(i.Image_Name),',',3),',',-1),',',-1)) AS Image_name_3, 
    IF((LENGTH(GROUP_CONCAT(i.Image_Name)) - LENGTH(GROUP_CONCAT(i.Image_Name SEPARATOR ''))) < 3,'',SUBSTRING_INDEX(GROUP_CONCAT(i.Image_Name),',',-1)) AS Image_name_4 
     FROM `advertiser` a
        LEFT JOIN category  c ON a.PK = c. FK 
        LEFT JOIN images I ON a.PK = i.FK
        WHERE c.FK = 1
        GROUP BY a.PK, a.Name,a.Email;
    


    1. Postgresql-基本配列とarray_agg

    2. postgresqlストアドプロシージャをデバッグする方法は?

    3. トレースフラグ3226を使用してログバックアップログを抑制します

    4. MySQLとphpの一意のテキストフィールド