· 7 years ago · Feb 20, 2019, 06:16 PM
1-- Example table (just an example. real table may contain hundreds of rows where field 2 is a duplicate but field 3 and 4 are different.)
2
3CREATE TABLE IF NOT EXISTS `docs` (
4 `field1` int(6) unsigned NOT NULL,
5 `field2` int(6) unsigned NOT NULL,
6 `field3` int(6) NOT NULL,
7 `field4` int(6) NOT NULL,
8 PRIMARY KEY (`field1`)
9) DEFAULT CHARSET=utf8;
10INSERT INTO `docs` (`field1`, `field2`, `field3`, `field4`) VALUES
11 ('27908', '82', '1', '17'),
12 ('27907', '82', '1', '50'),
13 ('402', '25', '1', '90'),
14 ('312', '25', '10', '8');
15
16SELECT * FROM
17(
18SELECT * FROM docs
19ORDER BY field2, field1 DESC
20)
21
22+--------+--------+--------+--------+
23| field1 | field2 | field3 | field4 |
24+--------+--------+--------+--------+
25| 402 | 25 | 1 | 90 |
26| 312 | 25 | 10 | 8 |
27| 27908 | 82 | 1 | 17 |
28| 27907 | 82 | 1 | 50 |
29+--------+--------+--------+--------+
30
31SELECT * FROM
32(
33SELECT * FROM docs
34ORDER BY field2, field1 DESC
35) temp
36GROUP BY field2
37
38+--------+--------+--------+--------+
39| field1 | field2 | field3 | field4 |
40+--------+--------+--------+--------+
41| 402 | 25 | 1 | 90 |
42| 27908 | 82 | 1 | 17 |
43+--------+--------+--------+--------+