テーブルT1があり、2行の新しいテーブルを取得したいと思います。0(T1の1つのコピーの場合)と1(T1の2番目のコピーの場合)を取得する追加の列です。
つまり、T1を、1つのブール列とすべての可能な値を持つ定数テーブルと相互結合したいと思います。
MySQLでこれを行うための最良/最も効率的/より適切な方法は何ですか?
テーブルT1があり、2行の新しいテーブルを取得したいと思います。0(T1の1つのコピーの場合)と1(T1の2番目のコピーの場合)を取得する追加の列です。
つまり、T1を、1つのブール列とすべての可能な値を持つ定数テーブルと相互結合したいと思います。
MySQLでこれを行うための最良/最も効率的/より適切な方法は何ですか?
クロスジョインを使用してこれを実行する場合は、次のように実行できます。
select t.*, const.which
from t cross join
(select 0 as which union all select 1 as which) const
これは、UNIONよりも間違いなく効率的です。UNION ALLよりも効率的かどうかは、データベースエンジンによって異なります。
「t」がサブクエリの場合、サブクエリが複数回評価される可能性がないため、これはより効率的である可能性があります。
あなたは組合を意味しますか?
select 0 as newfield, * from yourtable
union all
select 1, * from yourtable