2012-06-27 4 views
0

Теперь я пытаюсь получить 10 лучших данных из таблицы через цикл.Пока цикл в sql для top 10

Select ClientUserName, DestHost, count(DestHost) counts from #ProxyLog_record 
where ClientUserName =(Select top 1 ClientUserName from #ProxyLog_count_2) 
Group by ClientUserName, DestHost order by counts desc 

Что это получает только верхние данные clientusername как я могу это петля, где он получит первый, второй третий, десятый .... данные?

+1

** SQL ** это только ** Structured Query Язык ** - язык, используемый многими системами баз данных, но не продукт базы данных. Подобные вещи очень часто зависят от поставщика, поэтому нам действительно нужно знать, какую систему баз данных (и какую версию) вы используете. .. –

+1

Вы не зацикливаете в sql, если можете помочь. Даже не думайте о том, чтобы зацикливать записи. – HLGEM

ответ

0

Вы не можете цикл, но вы могли бы сделать что-то подобное и изменить количество записей, чтобы выбрать в подменю запроса:

Select ClientUserName, DestHost, count(DestHost) counts from #ProxyLog_record 
    where ClientUserName in (Select top 10 ClientUserName from #ProxyLog_count_2) 
    Group by ClientUserName, DestHost order by counts desc 
0
Group by ClientUserName, DestHost order by counts desc LIMIT 10 
+0

может работать для MySQL - но не для других систем ... OP не указал, какие RDBMS он использует ... –

+0

извините, я использую сервер sql – Cloud

+0

@AlexChen: и в какой ** версии ** это? 2000? 2005? 2008? 2008R2? 2012 ??? –