[英]Simple question on database query
我在一次采访中被要求编写一个SQL查询,该查询从表的某个列中获取具有最高值的前三个记录。 我写了一个查询,该查询获取了所有具有最高价值的记录,但没有确切地知道我只能得到那些记录的前三个记录。
你能帮我这个忙吗?
谢谢。
SELECT TOP 3 * FROM Table ORDER BY FieldName DESC
从这里开始 ,但可能有点过时了:
PostgreSQL的:
SELECT * FROM Table ORDER BY FieldName DESC LIMIT 3
MS SQL Server:
SELECT TOP 3 * FROM Table ORDER BY FieldName DESC
MySQL的:
SELECT * FROM Table ORDER BY FieldName DESC LIMIT 3
取决于数据库引擎,
select top 3 * from table order by column desc
要么
select * from table order by column desc limit 3
选择顶部3 ....
对于每个数据库,TOP 3的语法差异很大。
不幸的是,您需要使用这些构造来获得最佳性能。 像Hibernate这样的库在这里可以提供帮助,因为它们可以将通用的API转换为各种SQL方言。
由于您正在询问Java,因此可以仅选择数据库中的所有内容(使用ORDER BY),而仅获取前三行。 根据查询的执行方式,这可能就足够了(尤其是如果由于适当的索引而不必在数据库上进行排序,例如当您按主键字段进行排序时)。
但总的来说,您想使用SQL解决方案。
在oracle中,您还可以使用where rownum <4 ...
另外在mysql上有一个Limit关键字(我认为)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.