同じ列を共有する行を見つける必要がありますが、他の列にも異なる値があります。私は参考としてSQL Fiddleを作成しました。私の結果はまだ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のフィドルは素晴らしいですが、よく書かれた質問を代用するものではありません。たとえば、SQL Fiddleはダウンすることができます。また、望ましい結果が役立つだろう。 –
これは先ほど投稿した同じ質問ではありませんか? – Barmar
クエリを書き込もうとしましたか?投稿する。 – axiac