0
我有一个缺少行的MYSQL表,并希望查询以便每周'GROUP'具有相同的行数。查询将虚拟数据放在缺失的行中
在这个例子中,我需要每个星期我有3天,我想在每个星期的输出进行进一步的处理相同的天数/行:
week,day,value
1,1,101
1,2,102
1,3,103
2,1,201
2,2,202
3,1,301
3,2,302
我想产生这样的事情 - 每个“周”具有相同的行数。
week,day,value
1,1,101
1,2,102
1,3,103
2,1,201
2,2,202
2,3,NULL
3,1,301
3,2,302
3,3,NULL
要么填写“价值”与零或空值,或者如果丢失一天被设置为NULL或某事会做 - 甚至一些默认值。行/天的数量总是相同的(在这种情况下为3),但可能在任何一周中缺失1天或更多天。
我有点难倒如何做到这一点。 将一个左连接到三行1,2,3的表是否可行?
真正的表格比较大,包含所有(周,日)的交叉引用表的手动创建不可行。
谢谢!
CREATE语句
CREATE TABLE `new1` (
`week` int(11) DEFAULT NULL,
`day` int(11) DEFAULT NULL,
`value` varchar(45) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
插入语句
INSERT INTO test.new1
(week, day, value)
VALUES
(1,1,101),
(1,2,102),
(1,3,103),
(2, 1, 201),
(2,2, 202),
(3, 1, 301),
(3, 2, 302);
啊我一见式留给自己和子查询JOIN来获得全套天。这很巧妙! – xcxc
查询花了很长时间,所以我创建了第二个表,使用每周一天的子查询。但是,当我LEFT与原始表联接时,查询会在600s后超时......我将索引添加到两个表中一周和一天到两个,它的作品! (原来的一个是另一个大规模查询的结果,现在没有索引了)现在, – xcxc
@xcx很高兴听到它,如果经常这样做,绝对值得创建一个永久的'驱动程序'表,它具有所有的组合这是你的追求。 –