Простой вопрос по запросу базы данных - PullRequest
2 голосов
/ 06 апреля 2010

В одном из интервью меня попросили написать запрос SQL, который извлекает первые три записи с наибольшим значением в некотором столбце таблицы. Я написал запрос, который извлек все записи с наибольшим значением, но не понял, как именно я могу получить только первые три из них.

Не могли бы вы помочь мне в этом.

Спасибо.

Ответы [ 5 ]

5 голосов
/ 06 апреля 2010

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
1 голос
/ 06 апреля 2010

Выберите Топ 3 ....

1 голос
/ 06 апреля 2010

В зависимости от ядра базы данных, либо

select top 3 * from table order by column desc

или

select * from table order by column desc limit 3

0 голосов
/ 06 апреля 2010

В oracle вы также можете использовать, где rownum <4 ... </p>

Также в mysql есть ключевое слово Limit (я думаю)

0 голосов
/ 06 апреля 2010

Синтаксис для TOP 3 широко варьируется от базы данных к базе данных.

К сожалению, вам нужно использовать эти конструкции для лучшей производительности. Здесь помогают такие библиотеки, как Hibernate, поскольку они могут переводить общий API на различные диалекты SQL.

Поскольку вы спрашиваете о Java, можно просто ВЫБЕРИТЬ все из базы данных (с помощью ORDER BY), но получить только первые три строки. В зависимости от того, как должен выполняться запрос, это может быть достаточно хорошим (особенно если сортировка в базе данных не должна выполняться благодаря соответствующим индексам, например, при сортировке по полям первичного ключа).

Но в целом вы хотите использовать решение SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...