MySQL将来自多个表的数据组合到一个表中

时间:2012-06-07 04:10:20

标签: mysql

我有27个月度网站分析表,格式如下:

+---------------+-------+
| url           | views |
+---------------+-------+
| /foo/bar.php  | 200   |
| /bar/foo.html | 500   |
+---------------+-------+

我需要将它们组合成一个具有唯一“url”字段的表格,如:

+---------------+---------------+---------------+
| url           | views_2009_01 | views_2009_02 |
+---------------+---------------+---------------+
| /foo/bar.php  | 200           | 700           |
| /bar/foo.html | 500           |               |
| /snafu.html   |               | 500           |
+---------------+---------------+---------------+

为此,我创建了一个临时表:

+---------------+-------+------------+
| url           | views | date       |
+---------------+-------+------------+
| /foo/bar.php  | 200   | 2009-01-01 |
| /bar/foo.html | 500   | 2009-01-01 |
| /foo/bar.php  | 700   | 2009-02-01 |
| /snafu.html   | 500   | 2009-02-01 |
+---------------+-------+------------+

“url”字段不是唯一的,并添加了日期字段。

我导入了每个分析表并在每条记录中附加了日期。

然后我将url导入我的决赛桌,如下所示:

INSERT IGNORE INTO target (url)
SELECT S.url
FROM temp S;
然后,我为每个原始月度表执行了更新,如下所示:

UPDATE temp S, target T
SET T.views_200910 = S.views
WHERE S.url = T.url && S.date = '2009-10-01';

我的问题是,是否有一种更优雅的方式来实现相同的结果?

提前致谢。

0 个答案:

没有答案