假设我正在寻找第二高的记录。
样品表:
CREATE TABLE `my_table` (
`id` int(2) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`value` int(10),
PRIMARY KEY (`id`)
);
INSERT INTO `my_table` (`id`, `name`, `value`) VALUES (NULL, 'foo', '200'), (NULL, 'bar', '100'), (NULL, 'baz', '0'), (NULL, 'quux', '300');
第二高的值是foo
。你有多少种方法可以得到这个结果?
一个明显的例子是:
SELECT name FROM my_table ORDER BY value DESC LIMIT 1 OFFSET 1;
你能想到其他的例子吗?
我正在尝试这个,但LIMIT & IN/ALL/ANY/SOME subquery
不支持。
SELECT name FROM my_table WHERE value IN (
SELECT MIN(value) FROM my_table ORDER BY value DESC LIMIT 1
) LIMIT 1;