我正在努力加入我的表的內容,即使Join中某些列的數據缺失。我得到了它的一部分工作,但其中一列缺少數據加入的數據被交換。即使沒有匹配的數據,MySQL也會加入
我已經包含了我的測試表,行插入和我正在使用的查詢。
- 測試表
CREATE TABLE IF NOT EXISTS `TestTable` (
`ID` int(11) NOT NULL,
`Data` int(4) NOT NULL,
`LastModified` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
- 測試表數據
INSERT INTO `TestTable` (`ID`, `Data`, `LastModified`) VALUES
(1, 2480, '2014-05-20 00:00:00'),
(1, 2500, '2014-05-21 00:00:00'),
(2, 4560, '2014-05-20 00:00:00'),
(2, 8542, '2014-05-21 00:00:00'),
(3, 4587, '2014-05-21 00:00:00'),
(4, 2561, '2014-05-20 00:00:00'),
(4, 2561, '2014-05-21 00:00:00');
--Table內容
ID Data LastModified
1 2480 2014-05-20 00:00:00
1 2500 2014-05-21 00:00:00
2 4560 2014-05-20 00:00:00
2 8542 2014-05-21 00:00:00
3 4587 2014-05-21 00:00:00
4 2561 2014-05-20 00:00:00
4 2561 2014-05-21 00:00:00
--query我與
SELECT `t1`.`ID`, `t1`.`Data`, `t1`.`LastModified`, `t2`.`ID`, `t2`.`Data`, `t2`.`LastModified`
FROM `TestTable` AS `t1`
LEFT JOIN `TestTable` AS `t2`
ON (`t1`.`ID` = `t2`.`ID`)
AND DATE(`t1`.`LastModified`) = '2014-05-20'
AND DATE(`t2`.`LastModified`) = '2014-05-21'
GROUP BY `t1`.`ID`
ORDER BY `t1`.`ID` ASC
工作 個
--query結果
ID Data LastModified ID Data LastModified
1 2480 2014-05-20 00:00:00 1 2500 2014-05-21 00:00:00
2 4560 2014-05-20 00:00:00 2 8542 2014-05-21 00:00:00
3 4587 2014-05-21 00:00:00 NULL NULL NULL
4 2561 2014-05-20 00:00:00 4 2561 2014-05-21 00:00:00
--results我試圖讓,列切換爲ID 3
ID Data LastModified ID Data LastModified
1 2480 2014-05-20 00:00:00 1 2500 2014-05-21 00:00:00
2 4560 2014-05-20 00:00:00 2 8542 2014-05-21 00:00:00
NULL NULL NULL 3 4587 2014-05-21 00:00:00
4 2561 2014-05-20 00:00:00 4 2561 2014-05-21 00:00:00
你想要實現什麼?你能描述一下邏輯嗎? –
加入來自兩個不同日子的'數據'以比較每天的差異。防爆。 5-20-14 1000 - 5-21-14 3000 - >差異2000(差異不需要在查詢中顯示) – user3663131