我在采访中被问到这个问题,这似乎是一个常见的问题,但我无法得到或提出一些解决方案,所以需要你的帮助
请告诉我使用普通sql从表中检索前1行并且没有rownum,rowid,top或limit的方法。
由于
答案 0 :(得分:3)
不带顶部的查询示例。
select * from Contests
Where ContestId = (SELECT MAX(ContestId) FROM Contests)
答案 1 :(得分:2)
您可以使用ANSI标准SQL使用row_number()
函数和子查询来执行此操作:
select t.*
from (select t.*,
row_number() over (order by <however you define the "top" row>) as seqnum
from t
) t
where t = 1;
这假设您有一些排序方法,指定“顶部”行是什么。没有order by
子句,任何行都可以。
我在外部查询中使用了*
。严格来说,您只想在表格中包含列,不包括seqnum
。
答案 2 :(得分:2)
在MS SQL Server上,您可以使用SET ROWCOUNT n语句。如:
SET ROWCOUNT 1
SELECT * FROM Contests
有:
“导致SQL Server在指定后停止处理查询 返回行数。“
PS:如果我正确理解限制为MySQL中的LIMIT子句,那么应该使用它。