Скажем, у меня есть таблица, подобный следующему:ВЫБРАТЬ строк со вторым наивысшим значением в столбце
Item Description Time
----- ----------- -----
ItemA1 descript 08-16-2013 00:00:00
ItemA2 descript 08-16-2013 00:00:00
ItemA3 descript 08-16-2013 00:00:00
.
.
ItemAN descript 08-16-2013 00:00:00
ItemB1 descript 08-13-2013 00:00:00
ItemB2 descript 08-13-2013 00:00:00
ItemB3 descript 08-13-2013 00:00:00
.
.
ItemBN descript 08-13-2013 00:00:00
.
.
.
ItemX1 descript 01-13-2012 00:00:00
ItemX2 descript 01-13-2012 00:00:00
ItemX3 descript 01-13-2012 00:00:00
.
.
ItemXN descript 01-13-2012 00:00:00
Группы элементов добавляются периодически. Когда добавляется группа элементов, все они добавляются с тем же поле «Время». «Время» по существу служит уникальным индексом для этой группы элементов.
Я хочу выбрать группу элементов, имеющих второе по величине время. В этом примере мой запрос должен вытащить элементы «B». Я знаю, что могу сделать max (time
), чтобы выбрать элементы «А», но я не знаю, как бы я занял второе место.
Мои столбцы «Время» хранятся как TIMESTAMP, если это что-то значит.
Возможно, вы должны протестировать как решения MAX, так и LIMIT/ORDER BY, поскольку в зависимости от наличия индексов может быть недостаток производительности для LIMIT. http://stackoverflow.com/questions/426731/min-max-vs-order-by-and-limit –
Возможный дубликат [Что такое простейший SQL-запрос, чтобы найти второе по величине значение?] (http: // stackoverflow .com/questions/32100/what-is-the-simpleest-sql-query-to-find-the-second-maximum-value) – heretolearn