Почему не работает Top 5 From news_table order по news_date? - PullRequest
1 голос
/ 16 января 2009

У меня есть очень очень простая строка SQL, которая, похоже, не нравится MS Access.

Выберите Топ 5 * Из news_table Order By news_date

Это возвращает ВСЕ строки из news_table, а не только из Top 5.

Я думал, что это простое выражение SQL, по-видимому, это не так.

Какие-либо исправления или идеи относительно того, почему это не работает? Спасибо!

Ответы [ 5 ]

3 голосов
/ 17 января 2009

Выбор Top n выбирает все записи, где записи равны, то есть, если вы выбираете Top 2 и у вас есть 20 date1 и 20 date2, будет выбрано 40 записей.

Если есть ключевое поле,

 Select Top 5 * Order By KeyField

Должно вернуть 5 записей, потому что ключевое поле уникально.

1 голос
/ 17 января 2009

В прошлом у меня были проблемы с подобными утверждениями в Access. Для устранения подобных проблем я всегда разбиваю запрос на несколько запросов. Я бы предложил создать запрос в рамках доступа, который делает выбор с оператором order by. Затем выполните выбор вершины из этого запроса.

Query1 => SELECT * FROM news_table Order By news_date;

Query2 => Выбрать 5 лучших из Query1;

1 голос
/ 17 января 2009

Это делает трюк?

select top 5 * 
from (select * from news_table order by news_date) 

Я не знаю, почему оригинал не работает. Может быть, это извращение с Access.

Редактировать: бизнес-правила не указаны. Я не до конца понимал, что цель состояла в том, чтобы занять первое место в таблице и получить 5 лучших результатов. Это могло быть, чтобы получить первые 5 записей и затем ранжировать их.

Я не могу воспроизвести вашу проблему в моей версии Access. Weird.

0 голосов
/ 17 января 2009

Я почти никогда не пишу SQL, используя *. Мне интересно, возможно, Jet SQL не анализирует это правильно. Вы пробовали:

SELECT TOP 5 news_table.* FROM news_table ORDER BY news_date

Я бы так всегда писал.

Да, SELECT TOP 5 * должно работать, но если это не сработает, возможно, поможет немного больше конкретики.

0 голосов
/ 17 января 2009

Попробуйте

Select Top 5 From news_table Order By news_date
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...