簡體   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