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

时间:2010-04-06 05:31:55

标签: java sql database

我在接受采访时被要求编写一个SQL查询,该查询从表中的某些列中获取具有最高值的前三个记录。我写了一个查询,它获取了所有具有最高价值的记录,但是没有得到我只能得到那些记录的前三个记录。

你能帮助我吗?

感谢。

5 个答案:

答案 0 :(得分:5)

SELECT TOP 3 * FROM Table ORDER BY FieldName DESC

来自here,但可能有点过时了:

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

答案 1 :(得分:1)

取决于数据库引擎,

select top 3 * from table order by column desc

select * from table order by column desc limit 3

答案 2 :(得分:1)

选择前三名....

答案 3 :(得分:0)

TOP 3的语法因数据库而异。

不幸的是,您需要使用这些结构以获得最佳性能。 像Hibernate这样的库在这里有所帮助,因为它们可以将通用API转换为各种SQL方言。

由于您在询问Java,因此可以从数据库中选择所有内容(使用ORDER BY),但只能获取前三行。根据查询需要执行的方式,这可能足够好(特别是如果由于适当的索引而无法对数据库进行排序,例如当您按主键字段排序时)。

但总的来说,您希望使用SQL解决方案。

答案 4 :(得分:0)

在oracle中你也可以使用rownum< 4 ...

同样在mysql上有一个Limit关键字(我认为)