繁体   English   中英

关于数据库查询的简单问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM