2013-02-25 4 views
-6
(select top 1 percent A from B order by newid()) 

я хочу, чтобы получить случайную запись из таблицы BНеверный синтаксис рядом с ключевым словом 'order'. SQL

+2

Какая СУБД вы используете? Oracle? Postgres? И является ли это полным утверждением или частью другого? –

+0

@a_horse_with_no_name Я бы предпочел SQL Server с помощью 'NEWID()' и 'TOP' – Kermit

+0

Я использую SQL-сервер, и я хочу запустить запрос с помощью скобок. – enigma

ответ

2

USE, как это ...

select * from B where A in 
(select top 1 percent A from B order by newid()) 

ИЛИ

select top 1 percent A from B order by newid() 

И даст вам случайные на строки каждый раз. ...

EDIT:

Selecting Rows Randomly from a Large Table

+0

Но нет никакого смысла иметь 'in'. 'select top 1 percent * from B order by newid()' вполне может быть всем, что необходимо. –

+2

@GopeshSharma: утверждение * без * IN будет быстрее. Поэтому с точки зрения производительности это не ** правильный подход. –

+0

@a_horse_with_no_name: Да, на самом деле, без IN будет быстрее, см. Мой Edit –

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