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

1つの行を別のテーブルの複数の行に結合します

    使用:

       SELECT x.name,
              GROUP_CONCAT(y.property SEPARATOR ', ')
         FROM PEOPLE x
    LEFT JOIN PROPERTIES y ON y.name = x.name
        WHERE x.age > 26
     GROUP BY x.name
    

    MySQL関数GROUP_CONCAT(ドキュメント )PROPERTIES.property値のコンマ区切りリストを返すため。

    PROPERTIESテーブルに値を持たないPEOPLEレコードを含めるために、JOINではなくLEFT JOINを使用しました。PROPERTIESテーブルに値を持つ人のリストのみが必要な場合は、次を使用します。

       SELECT x.name,
              GROUP_CONCAT(y.property SEPARATOR ', ')
         FROM PEOPLE x
         JOIN PROPERTIES y ON y.name = x.name
        WHERE x.age > 26
     GROUP BY x.name
    

    これは一例だと思いますが、「ジョン・スミス」がいくつあるかを考えると、名前を使用することは参照整合性にとって不適切な選択です。ユーザーごとに一意の値であるuser_idを割り当てることをお勧めします。



    1. ListをJavaからOracleプロシージャに渡す方法は?

    2. MySQLは行を取得しますが、ある列の値を別の値よりも優先します

    3. RPostgreSQLを使用した特定のスキーマへの書き込み

    4. MySQLとejabberdによる効率的な外部名簿