我正在使用SQL Server。 我有一个SQL查询返回多行,我只需要从中选择第二个结果,或者第一个结果可能是。 我应该为这个要求写什么查询?
答案 0 :(得分:2)
您可以使用
CREATE TABLE IF NOT EXISTS `people_copy` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`company_id` int(11) NOT NULL,
`firstname` char(255) COLLATE utf8_unicode_ci NOT NULL,
`lastname` char(255) COLLATE utf8_unicode_ci NOT NULL,
`email` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`mobile` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`birthdate` date DEFAULT NULL,
`birthplace` char(255) COLLATE utf8_unicode_ci NOT NULL,
`birth_country` char(255) COLLATE utf8_unicode_ci NOT NULL,
`blocked_from` date DEFAULT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=42095 DEFAULT CHARSET=utf8
COLLATE=utf8_unicode_ci;
/ offset
:
fetch
注意:
select t.*
from t
order by col
offset 1 fetch next 1 row only;
,否则SQL结果集会以不确定的顺序返回行。即使在同一系统上运行两次查询并按不同顺序返回行,也需要order by
。order by
。offset 1
/ offset
是ANSI标准语法。答案 1 :(得分:1)
SELECT * FROM TABLE ORDER BY COLUMN ASC LIMIT 1 首先发现
SELECT * FROM TABLE ORDER BY COLUMN DESC LIMIT 1 最后一行
答案 2 :(得分:1)
我们可以使用TOP
子句 -
SELECT TOP (1) Col1 FROM (Your SQL Query) as XYZ Order By Col3 DESC
答案 3 :(得分:0)
你可以尝试
SELECT * FROM
(
SELECT r.*, ROW_NUMBER() OVER (ORDER BY SomeField ASC) AS RowNum
) sorty
WHERE RowNum = 2