2

我有一个表 T1,我想得到一个包含两倍行的新表:一个额外的列,它得到 0(对于 T1 的一个副本)和 1(对于 T1 的第二个副本)。

换句话说,我想将 T1 与一个带有一个布尔列和所有可能值的常量表交叉连接。

在 MySQL 中执行此操作的最佳/最有效/更合适的方法是什么?

4

2 回答 2

5

如果你想通过交叉连接来做到这一点,你可以这样做:

select t.*, const.which
from t cross join
     (select 0 as which union all select 1 as which) const

这绝对比 UNION 更有效。是否比 UNION ALL 更高效取决于数据库引擎。

如果“t”是一个子查询,那么这可能更有效,因为子查询不可能被多次评估。

于 2012-08-22T14:01:44.023 回答
2

你是说工会?

select 0 as newfield, * from yourtable
union all
select 1, * from yourtable
于 2012-08-22T13:51:48.673 回答