けっこう無理矢理なやり方ではありますが、「as」を使って各テーブルが同じカラムを持つようにしてあげましょう。
以下がそのサンプルコードです。
categoryというカラムがないテーブルとcategoryというカラムがあるテーブルをUNIONする際に、無い方を「10 as category」というふうに値が10であるcategoryカラムを定義して演算できるようにします。
どのテーブルのレコードかを判別したい際には両方にtypeカラムなどを定義するといいでしょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
SELECT t1.* FROM ( ( SELECT id, date, title, category, 0 as type FROM a_table ) UNION ( SELECT id, date, title, 10 as category, 1 as type FROM b_table WHERE category IN (2, 4, 6) ) ) as t1 ORDER BY date DESC LIMIT 100 |