-3
我需要查找共享同一列但在其他列中具有不同值的行。我创建了一个SQL小提琴供参考。我的结果仍然是0.任何帮助将不胜感激。SQL查找一列具有相同值并且其他列具有不同值的行
CREATE TABLE IF NOT EXISTS `tracking` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`IP` varchar(255) NOT NULL,
`MAC` varchar(255) NOT NULL,
`UUID` varchar(255) NOT NULL,
`timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`isActive` tinyint(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;
--
-- Dumping data for table `tracking`
--
INSERT INTO `tracking` (`id`, `IP`, `MAC`, `UUID`, `timestamp`, `isActive`) VALUES
(1, '98.186.154.212.12', '10:DD:B1', ' uuid:a5fadbbd ', '2016-09-06 15:03:52', 0),
(2, '423.2362.234', '2534623523523', ' uuid:a5fadbbd ', '2016-09-06 15:15:28', 0),
(3, '98.186.154.212.12', '10:DD:B1', ' uuid:a5fadbbd ', '2016-09-06 15:03:52', 0),
(4, '98.186.154.212.12', '10:DD:B1', ' uuid:a5fadbbd ', '2016-09-06 15:04:09', 0),
(5, '98.186.154.212.12', '10:DD:B1', ' uuid:a5fadbbd ', '2016-09-06 15:04:44', 0),
(6, '98.186.154.212.12', '10:DD:B1', ' uuid:a5fadbbd ', '2016-09-06 15:04:44', 0),
(7, '98.186.154.212.12', '10:DD:B1', ' uuid:a5fadbbd ', '2016-09-06 15:06:28', 0),
(8, '98.186.154.212.12', '10:DD:B1', ' uuid:a5fadbbd ', '2016-09-06 15:06:28', 0),
(9, '98.186.154.212.12', '10:DD:B1', ' uuid:a5fadbbd ', '2016-09-06 15:06:28', 0);
SELECT *
FROM tracking t
WHERE timestamp =
(SELECT MAX(timestamp)
FROM tracking
WHERE UUID = t.UUID
AND (IP <> t.IP OR MAC <> t.MAC))
GROUP BY id;
http://sqlfiddle.com/#!9/c0ae3b6/4
期望的结果是这样的:
您应该在问题中包含数据和代码示例。 SQL Fiddle是一款非常棒的产品,但它并不能代替一个写得很好的问题。例如,SQL Fiddle可能会关闭。而且,理想的结果将会有所帮助。 –
这不是你先前发布和删除的同一个问题吗? – Barmar
您是否试图编写查询?发表它。 – axiac