我在接受采访时被要求编写一个SQL查询,该查询从表中的某些列中获取具有最高值的前三个记录。我写了一个查询,它获取了所有具有最高价值的记录,但是没有得到我只能得到那些记录的前三个记录。
你能帮助我吗?
感谢。
答案 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关键字(我认为)