您应该使用union all。但是,您还应该包含一个标识数据来源的列。在这种情况下,我假设它是日期:
SELECT '2012-08' as YYYYMM, id, data_log, data_name
FROM `tbl_2012-08`
UNION ALL
SELECT '2012-09' as YYYYMM, id, data_log, data_name
FROM`tbl_2012-09`;
此外,如果您希望 id 在将它们组合在一起后是唯一的,那么这将起作用:
select YYYYMM, (@rn := @rn + 1) as id, id as old_id, data_log, data_name
from ((SELECT '2012-08' as YYYYMM, id, data_log, data_name
FROM `tbl_2012-08`
) UNION ALL
(SELECT '2012-09' as YYYYMM, id, data_log, data_name
FROM`tbl_2012-09`
)
) t cross join
(select @rn := 0) const;
您还可以通过以下方式创建另一个表:
create table new_table as
<either of the queries above>