我有这个MySQL表(sqlfiddle):
CREATE TABLE `units` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`location_id` int(11) DEFAULT NULL,
`price` int(11) DEFAULT NULL,
`square` decimal(11,2) DEFAULT NULL,
`year` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
INSERT INTO `units` VALUES
(1,1,1500000,150.00,2010),
(2,1,2000000,150.70,2010),
(3,2,1800000,66.00,2013),
(4,3,3000000,75.00,2015),
(5,3,2400000,54.00,2015),
(6,4,1500000,78.50,2014),
(7,4,1400000,78.00,2014),
(8,4,1450000,79.00,2014),
(9,5,2600000,110.00,2017),
(10,6,2700000,124.00,2017);
id location_id price square year
1 1 1500000 150 2010
2 1 2000000 150.7 2010
3 2 1800000 66 2013
4 3 3000000 75 2015
5 3 2400000 54 2015
6 4 1500000 78.5 2014
7 4 1400000 78 2014
8 4 1450000 79 2014
9 5 2600000 110 2017
10 6 2700000 124 2017
现在,我想删除每个地区的重复项,其中年份的地方和舍入值之间的平方不同,并获得组中的最低价格。因此,如果我们对location_id = 1 and year = 2010
进行分组,那么我们应该检查此群组square
中是否between 150 and 151
,并选择ID
min(price)
。
我想看到的结果是:
id
1
3
4
5
7
9
10
是否可以只使用一个查询?欢迎任何建议。