كيف يمكن أن أفعل الترحيل في Sybase دون temp الطاولة ؟ (أوراكل rownum المسألة)
سؤال
في أوراكل ، عادة الاستعلام مثل هذا الترحيل.
SELECT * FROM (SELECT *, rownum rid FROM TABLEA WHERE rownum <= #pageend#)
WHERE rid > #pagestart#
ومع ذلك ، لا يوجد "rownum" وظيفة في Sybase DBMS.
كيف يمكن أن أفعل هذا الاستعلام exactlly نفسه في Sybase?
لقد وجدت بعض الطرق.
استخدام "rowcount"
مجموعة rowcount 10
حدد * من TABLEA
استخدام الهوية (جعل temp الجدول)
حدد *, ROWNUM=الهوية(8) في #TEMP من TABLEA
SELECT * FROM #TEMP حيث ROWNUM < #pageend# و ROWNUM >= #pagestart#
إسقاط جدول #TEMP
هذه ليست ما أريد.
rowcount في الدورة المستوى و لا أريد جعل الجدول المؤقت.
المحلول
إذا كان لديك معرف فريد عمود في الجدول الخاص بك يمكنك استخدام اختيار أفضل ن
SELECT TOP 10 *
FROM tableA
WHERE id BETWEEN @start AND @end
نصائح أخرى
هذا وسوف تعطيك كل معرفات بحيث يمكنك استخدامها في تحديد مثل "select * where id_column in (ids from query below)
"
select top 10 id_column from trade
where @whereClause
and id_column > 0 //keep replacing this with the max id from the result set
order by id_column
لا تنتمي إلى StackOverflow