我有以下结构:
CREATE TABLE IF NOT EXISTS `myTable` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`time` int(11) NOT NULL,
`item` varchar(255) NOT NULL,
`price` int(11) NOT NULL,
PRIMARY KEY (`ID`),
KEY `time` (`time`),
KEY `item` (`item`),
KEY `price` (`price`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;
INSERT INTO `myTable` (`ID`, `time`, `item`, `price`) VALUES
(1, 100, 'cat', 10),
(2, 101, 'cat', 10),
(3, 102, 'cat', 9),
(4, 103, 'cat', 11),
(5, 104, 'cat', 10),
(6, 105, 'cat', 10),
(7, 106, 'cat', 11);
我试图找出一个返回以下内容的查询:
time item price
---- ---- -----
100 cat 10
102 cat 9
103 cat 11
104 cat 10
106 cat 11
它按时间排序,并且仅显示价格与其之前的价格不同的行(编辑: *根据时间*)。
编辑:
也许我把原来的问题弄得太简单了,如果用这样的数据更复杂怎么办:
INSERT INTO `myTable` (`ID`, `time`, `item`, `price`) VALUES
(1111, 100, 'cat', 10),
(21, 105, 'cat', 10),
(31, 108, 'cat', 9),
(411, 109, 'cat', 11),
(512, 110, 'cat', 10),
(61, 114, 'cat', 10),
(72, 120, 'cat', 11),
(8, 100, 'dog', 20),
(93, 102, 'dog', 20),
(104, 108, 'dog', 29),
(111, 109, 'dog', 31),
(122, 155, 'dog', 20),
(13, 165, 'dog', 20),
(1445, 172, 'dog', 31);
在上面,ID列都乱了,可能中间还有其他记录。此外,时间不再以 1 递增,我将一只狗扔进了混合物中。