كيف يمكن أن أفعل الترحيل في Sybase دون temp الطاولة ؟ (أوراكل rownum المسألة)

StackOverflow https://stackoverflow.com/questions/1225889

  •  22-07-2019
  •  | 
  •  

سؤال

في أوراكل ، عادة الاستعلام مثل هذا الترحيل.

SELECT * FROM (SELECT *, rownum rid  FROM TABLEA WHERE rownum <= #pageend#)
WHERE rid > #pagestart#

ومع ذلك ، لا يوجد "rownum" وظيفة في Sybase DBMS.

كيف يمكن أن أفعل هذا الاستعلام exactlly نفسه في Sybase?

لقد وجدت بعض الطرق.

  1. استخدام "rowcount"

    مجموعة rowcount 10

    حدد * من TABLEA

  2. استخدام الهوية (جعل 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top