mysql - 为每个 ID 创建新列

标签 mysql

<分区>

假设我有一个表(约 100 万行)如下所示:

ID        
1   
2   
3     
4     
5     
6     
.     
.     
.     

我想为 2014 年和 2015 年全年添加年和月列。 所以输出变成:

ID  Year  Month
 1  2014    1
 1  2014    2
 1  2014    3
 .    .     .
 .    .     .
 .    .     .
 1  2015    12
 2  2014    1
 2  2014    2
and so on so forth.

我该怎么做? 谢谢

最佳答案

听起来您想创建一个笛卡尔积。这是使用 cross join 的一个选项:

select t1.id, t2.yr, t3.mnth
from yourtable t1 
    cross join (select 2014 yr union all select 2015) t2 
    cross join (select 1 mnth union all select 2 union all select 3 union all
                select 4 union all select 5 union all select 6 union all
                select 7 union all select 8 union all select 9 union all
                select 10 union all select 11 union all select 12) t3 
order by t1.id, t2.yr, t3.mnth

关于mysql - 为每个 ID 创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38488745/

相关文章:

mysql - 每个 MySQL 排序规则的每个字符的内存使用情况

mysql - 只有一个 Mysql CURRENT_TIMESTAMP 的解决方法

mysql - 如何在 phpmyadmin 上制作复合主键

mysql - 将 PHPMyAdmin/MySQL-Workbench 连接到 MySQL 容器 (Docker)

php - 使用 PHP 更新多行

mysql - 如何在查询之间使用执行方法?

MySQL 和 InnoDB - 在非唯一索引上使用 WHERE 进行更新 - 如何遇到行?

mysql - 如何根据Mysql中的唯一id获取每个值的计数

php、MySql查询,两个COUNT一个GROUP BY

mySQL 按表中值的总和排序