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

2つのテーブルをマージするMySQLの単一ステートメント

    これはjoinで行うことができます およびgroup by

    select u.*, firstname, lastname
    from user u join
         (select uf.user_id,
                 max(case when key = 'firstname' then value end) as firstname,
                 max(case when key = 'lastname' then value end) as lastname
          from user_field uf
          group by user_id
         ) uf
         on uf.user_id = u.id;
    

    一連の結合を使用してこれを行うこともできます:

    select u.*. firstname.value, lastname.value
    from user u join
         user_field firstname
         on u.id = firstname.user_id and firstname.key = 'firstname' join
         user_field lastname
         on u.id = lastname.user_id and lastname.key = 'lastname';
    

    結果は、これを1つのユーザーIDに制限しているようです。 whereが必要な場合があります このフィルターを使用した句。



    1. MySQLの日付形式のチートシート

    2. PostgreSQLでのAbs()のしくみ

    3. '<'演算子は予約済みPowerShellエラー

    4. Windowsでの未定義関数dbase_open()エラーの呼び出しを解決する方法