2015-07-07 2 views
1

таблица такова:Как выбрать верхние (5) строки с указанным идентификатором и последней датой?

Id_P Id_Utente PasswordOld_      DateOld_ 
1  134   E0476F2E85A84FB4E68AA26A841A86FA 8/01/2015 10:30:00 PM 
2  134   9C454981DE1702C7AAD3B435B51404EE 8/02/2015 10:30:00 PM 
3  134   BA0D9BE25565C34CAAD3B435B51404EE 8/03/2015 10:30:00 PM 
4  134   9C6C9E34FB63DC9DE68AA26A841A86FA 8/04/2015 10:30:00 PM 
5  134   14BEE187F918F8817584248B8D2C9F9E 8/04/2015 10:30:00 PM 
6  135   9A70F4507624037CAAD3B435B51404EE 15/01/2015 10:30:00 PM 
7  135   C3DB775AE3B3BD29E68AA26A841A86FA 15/02/2015 10:30:00 PM 
8  135   0BB76B9CA33D8E31AAD3B435B51404EE 15/03/2015 10:30:00 PM 
9  136   9A70F4507624037CAAD3B435B51404EE 26/01/2015 10:30:00 PM 
10 136   C3DB775AE3B3BD29E68AA26A841A86FA 26/02/2015 10:30:00 PM 
11 136   0BB76B9CA33D8E31AAD3B435B51404EE 26/03/2015 10:30:00 PM 
+0

благодарю вас Энди! – Luf

+0

В какой базе данных вы используете? –

+0

Мне нужно получить 5 PasswordOld_, скажем, Id_Utente = 134 и DateOld_. – Luf

ответ

0

Как ваш DateOld_ поле типа ntext, вы не можете сделать order by по этому вопросу. Чтобы отсортировать результаты на основе этого столбца, вам необходимо преобразовать значения в datetime.

Вы можете выполнить следующий запрос для выборки 5 строк с id_utente = 134 и отсортированных в порядке убывания, как в то время:

select top 5 * from table1 
    where id_utente = 134 
    order by convert(datetime, convert(varchar, dateold_)) desc; 

SQLFiddle Example

+0

Я доволен этим ответом. Благодаря!! – Luf

+0

Если это сработало для вас, вы можете принять его как правильное, чтобы оно было полезно другим в будущем. –

1

Используйте пункт order by

select top 5 * 
from table1 
where Id_P in (1,2,3,4,5) 
order by DateOld_; 
+0

Согласно комментариям OP, 'DateOld_' имеет тип' ntext'. Вы не можете выполнить 'order by' в этом типе столбца. –

+0

я все еще получаю ошибку: { «Текст, NTEXT и типы данных изображений не может быть сравнен или сортирует, за исключением случаев использования IS NULL или LIKE оператора.»} после использования следующего запроса: Dim QuerySelect2 As String = "SELECT TOP 5 * FROM TAB_PASSWORDS WHERE Id_Utente_ = '" & Id_CP & "' ORDER BY DataOld_" – Luf

+0

ok right advice)) – Luf

2

Вы можете использовать ограничение или топ
попробовать это

SELECT TOP 5 * FROM yourTablename order by DateOld_ desc,Id_P desc; 

ВЫБРАТЬ LIMIT не поддерживается во всех Базы данных SQL. Но вы можете использовать запрос выше для SQL Server или MSAccess и ниже для mysql.

SELECT * 
    FROM yourTablename 
    order by DateOld_ desc LIMIT 5 ; 

Вы также можете посетить эту ссылку http://www.w3schools.com/sql/sql_top.asp

+1

'limit' является специфичным для MySQL. OP использует sql-сервер, поэтому он не будет работать. –

+0

В соответствии с комментариями OP 'DateOld_' имеет тип' ntext'. Вы не можете выполнить 'order by' в этом типе столбца. –

1

LIMIT является лучшим способом.

Используйте это нравится:

SELECT * 
FROM TABLE_NAME 
LIMIT 5 
Смежные вопросы