質問: 初心者です。 取得結果に、それぞれ取得したテーブル名を表示させたい。 結果beforeをafterにしたいです(下記参照)。 テーブル名ではなく、適当な文字列でも構いません(区別できれば良い)。 使用しているのはMySQLです。 ``` CREATE TABLE テーブルA,テーブルB (カラムA(varchar),カラムB(date)) SELECT * FROM テーブルA A | B a | 01 e | 05 SELECT * FROM テーブルB A | B b | 02 c | 03 d | 04 ※実行するSQL SELECT カラムA, MAX(カラムB)AS MAX_B FROM( SELECT カラムA,カラムB FROM テーブルA UNION ALL SELECT カラムA,カラムB FROM テーブルB )AS a GROUP BY カラムA ORDER BY カラムB ASC ・結果before A | B a | 01 b | 02 c | 03 d | 04 e | 05 ・結果after A | B | ? a | 01 | テーブルA b | 02 | テーブルB c | 03 | テーブルB d | 04 | テーブルB e | 05 | テーブルA ```
回答: unionしているそれぞれのテーブルに固定文字列を固定カラム名で与えれば良いと思います。 * SQLにてselectをする際に固定値を設定して取得する方法(Now updating) サンプルSQL ``` SELECT カラムA, MAX(カラムB)AS MAX_B,テーブル名 FROM( SELECT カラムA,カラムB, 'テーブルA' as テーブル名 FROM テーブルA UNION ALL SELECT カラムA,カラムB, 'テーブルB' as テーブル名 FROM テーブルB )AS a GROUP BY カラムA,テーブル名 ORDER BY カラムB ```