UNIONでテーブルを連結して検索するサンプルクエリ

hoge0とhoge1テーブルあったとする。
それぞれをdatesフィールドで降順ソートし、連結して先頭から5件を取得するサンプル。

(
    SELECT
    no,
    name,
    dates,
    0                   //※
    FROM hoge0
    ORDER BY dates DESC
)
UNION ALL
(
    SELECT
    no,
    name,
    dates,
    1                   //※
    FROM hoge1
    ORDER BY dates DESC
)
LIMIT 0, 5

連結してからソートする場合は、最後のLIMITの前でORDER BYする。

※の箇所について

結果セットに0というフィールが追加され、hoge0からのレコードには0が、hoge1からのレコードには1が格納される。
どちらのテーブルから抜き出されたかを区別するのに使えそう。
ダサいけど、色々調べて分からなかったのでこれでやってみた。