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

同じIDに基づいてグループ化された2つのテーブルからSELECT

    union あなたの問題に合うでしょう。ユニオンの両側に同じ数とタイプの列を与えるには、データマッサージが必要です:

    select  group_id
    ,       id as item_id
    ,       name
    ,       description
    ,       source_table
    from    (
            select  id
            ,       user_id
            ,       group_id
            ,       name
            ,       description
            ,       'from table1' source_table
            from    table1
            union all
            select  id
            ,       user_id
            ,       group_id
            ,       name
            ,       description
            ,       'from table2'  -- Column name is already defined above
            from    table2
            ) as SubQueriesMustBeNamed
    where   user_id = 1
    order by
            group_id
    ,       name
    

    SQLFiddleでの実例。

    結果セットを好きなようにフォーマットするには、結果セットを繰り返し処理します。 group_idの場合 変更するには、# Group N #を印刷します ヘッダー。

    クライアント側で他のループや反復を行う必要はなく、foreachを1つだけにする必要があります。 または、クエリによって返される行のセットと同等です。



    1. NodeJSとmysql:クエリ結果を待つ

    2. PHPで変更/改訂スクリプトを追跡しますか?

    3. Oracleでコンマを使用して数値をフォーマットする方法

    4. SQLの逆LIKE'%value%'