2017-01-18 6 views
0

UNIONの結果をエイリアスでグループ化して返すことができるかどうかを知りたいですか?例えば :MySQLが返すユニオン選択結果をグループ単位で区切る

(SELECT * FROM table1) AS first 
UNION 
(SELECT * FROM table2) AS second 

結果があるように:

first = contains all table1 rows 
second = contains all table2 rows 

は、実際に私はこのような連想配列をしたい:

[]=>[ 
    'first'=>[table1 results], 
    'second'=>[table2 results] 
] 

私はそれを試みたが、動作しません。多分私はそれを悪くしています。 これは単一のクエリで行うことができますか、2つの分離したクエリを実行する必要があります。おかげさまで

答えて

0

unionで重複を取り除くことはできません。あなたはunion allとすることができます。

一つの方法は次のとおりです。

select . . . 
from (select t.*, 0 as which from table1 t union all 
     select t.*, 1 as which from table1 t 
    ) t 
order by which; 
+0

が、私はそれを試してみましたが、それは動作します:あなたは出力にwhichを表示したくない場合は

SELECT t.*, 0 as which FROM table1 t UNION ALL SELECT t.*, 1 FROM table2 t ORDER BY which; 

は、サブクエリを使用します。実際には、これは結果(権利)にフィールド(魔女)を追加しますか?テーブルの後の "t"は何ですか?ありがとう。 –

+1

't'はテーブルエイリアスです。この場合は単なる手掛かりですが、(サブクエリの後の 't 'のような)テーブルのエイリアスが必要になることがあります。 –

関連する問題