檢索的唯一用戶,我有以下一組數據:查詢誰相互覆蓋
id changeType dateTimeStamp userName
1 insert 07/02/2015 0:15:53 john
2 update 07/02/2015 0:15:52 adriana
3 insert 07/02/2015 0:15:51 john
4 update 07/02/2015 0:15:50 john
5 update 07/01/2015 22:46:57 denise
我想找回誰將覆蓋則5分鐘內彼此改變對方的數據的用戶。對於這個特定的數據集,我應該得到的ID 1,2,和3
我想:
SELECT *
FROM tblChanges v1
INNER JOIN tblChanges v2
ON v2.userName <> v1.userName
AND v1.dateTimeStamp <> v2.dateTimeStamp
WHERE ABS(TIMESTAMPDIFF(MINUTE, v1.dateTimeStamp, v2.dateTimeStamp) ) <= 5
這也檢索ID = 4,我不需要。任何幫助?
在此先感謝。
編輯:輸出將
id changeType dateTimeStamp userName
1 insert 07/02/2015 0:15:53 john
2 update 07/02/2015 0:15:52 adriana
3 insert 07/02/2015 0:15:51 john
編輯:這裏是DDL/DML
CREATE TABLE `tblChanges` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`changeType` VARCHAR(50) DEFAULT NULL,
`dateTimeStamp` DATETIME NOT NULL ON UPDATE CURRENT_TIMESTAMP,
`userName` VARCHAR(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1 ;
INSERT INTO tblChanges (id, changeType, dateTimeStamp, userName)
VALUES (1, 'insert' , '2015-07-02 12:15:53', 'john') ;
INSERT INTO tblChanges (id, changeType, dateTimeStamp, userName)
VALUES (2, 'update' , '2015-07-02 12:15:52', 'adriana') ;
INSERT INTO tblChanges (id, changeType, dateTimeStamp, userName)
VALUES (3, 'insert' , '2015-07-02 12:15:51', 'john') ;
INSERT INTO tblChanges (id, changeType, dateTimeStamp, userName)
VALUES (4, 'update' , '2015-07-02 12:15:50', 'john') ;
INSERT INTO tblChanges (id, changeType, dateTimeStamp, userName)
VALUES (5, 'update' , '2015-07-01 22:46:57', 'denise') ;
你可以給你預期的輸出? – Sadikhasan
而不是*指定需要的列。 –
如果您願意,可以考慮遵循以下簡單的兩步式操作:1.如果您尚未這樣做(您沒有),請提供適當的DDL(和/或sqlfiddle),以便我們可以更輕鬆地複製問題。 2.如果您尚未這樣做(再次確實沒有),請提供與步驟1中提供的信息相對應的所需結果集。 – Strawberry