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