检索的唯一用户,我有以下一组数据:查询谁相互覆盖
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