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很高興聽到它,如果經常這樣做,絕對值得創建一個永久的'驅動程序'表,它具有所有的組合這是你的追求。 –