2012-06-27 4 views
3

В Oracle PL/SQL я привык писать:Oracle эквивалент ROWNUM для SQL Server 2005?

SELECT * FROM MY_TABLE WHERE ROWNUM <= 100; 

для того, чтобы принести только первые 100 записей таблицы с именем MY_TABLE.

Что может быть эквивалентной операцией SELECT в SQL SERVER?

+1

Как предписано, что? Нет никакого «естественного» упорядочения строк. –

+1

Какая версия SQL Server? –

+0

SQL SERVER 2005 – UltraCommit

ответ

1
SELECT TOP 100 * FROM TABLE 

Вы также можете фильтровать строки, используя где класс

SELECT TOP 100 * FROM YOURTABLE WHERE YOURCONDITION 
+0

выберите топ без ордера, как правило, неправильная идея. –

+1

ОК, но мне нужен только образец записей, потому что они составляют более 5 миллионов записей. – UltraCommit

+1

@UltraCommit - если вы просто хотите * образец *, почему бы не указать предложение ['TABLESAMPLE'] (http://msdn.microsoft.com/en-us/library/ms177634 (v = sql.90))? Выражение вашего * намерения * настолько ясно, насколько это возможно, обычно это хорошо. –

3

В SQL-Server Вы можете использовать TOP, чтобы выбрать no. строк.

SELECT TOP 100 * FROM MY_TABLE 
2
select top 100 * from tbl 

имя столбца необходимо или использовать *

1
SELECT TOP 100 * FROM MY_TABLE 

Извините, если я неправильно понял.

Edit: Должно быть быстрее

1

В SQL Server 2012, вы можете использовать OFFSET и FETCH, чтобы определить, какие строки вернуть. Они документированы под номером ORDER BY; Это имеет смысл, так как запрашивает 100 строк, когда таблицы по определению неупорядочен, дает непредсказуемые результаты.

Точно так же, если вы используете ответы друга, повторно: TOP, вы должны также имеете ORDER BY положение, или же это не определенно который будет возвращена строка.

Смежные вопросы