1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

mssql: workaround für LIMIT ?

    • Frage
  • bosie
  • 20. März 2004 um 02:08
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • bosie
    Punkte
    1.767
    Beiträge
    325
    • 20. März 2004 um 02:08
    • #1

    moin,

    ich bin LIMIT von mysql gewöhnt und irgendwie gibts ja sowas in mssql nicht.
    wie kann ich also zb 50 einträge aus der mitte tabelle herausholen ?
    TOP liefert ja nur den anfang, mit where möchte ich es eigentlich nicht begrenzen, da dies ja eher nicht konkret sein kann oder?

    danke
    thomas

  • mas
    Punkte
    751
    Beiträge
    143
    • 20. März 2004 um 08:18
    • #2

    Naja, ich kann Dir nur ein work-around anbieten (anhand eines Beispiels):

    SELECT * FROM (
    SELECT TOP [OG-UG+1] * FROM (
    SELECT TOP [OG] [Spalte1, Spalte2, ...]
    FROM [Tabelle]
    ORDER BY [key] ASC

    ) ORDER BY [key] DESC

    ) ORDER BY [key] ASC

    Tabelle (ID, Text):
    1, AAA
    2, BBB
    3, CCC
    4, DDD
    5, EEE

    => zB Datensätze 2-4 sind interessant nach ID sortiert
    SELECT * FROM (
    SELECT TOP 3 * FROM (
    SELECT TOP 4 ID, Text
    FROM tabelle_test
    ORDER BY ID ASC

    ) ORDER BY ID DESC

    ) ORDER BY ID ASC

    1.) bei der innersten SELECT-Anweisung (SELECT TOP 4 ID, Text FROM tabelle_test ORDER BY ID ASC) kommt das heraus

    1, AAA
    2, BBB
    3, CCC
    4, DDD

    2.) dann die zweite SELECT ANWEISUNG (SELECT TOP 3 * FROM (....) ORDER BY ID DESC) liefert folgendes

    4, DDD
    3, CCC
    2, BBB

    3.) und das ganze jetzt nochmal umdrehen (SELECT * FROM (....(....)....) ORDER BY ID ASC)!

    Es ginge natürlich auch mit nur 2 Abfragen, allerdings müsste man dafür die Anzahl der Datensätze wissen

    mfg
    mas

    [edit]
    Solltest Du "LIMIT" allerdings dazu verwenden wollen um die Belastung des SQL-Servers zu verringern - in diesem Fall geht der Schuss natürlich nach hinten los, da Du ja 3 SELECT-Abfragen in diesem workaround verwendest
    [/edit]

  • bosie
    Punkte
    1.767
    Beiträge
    325
    • 20. März 2004 um 12:16
    • #3

    hehe ja eigentlich wars für die reduzierung der serverlast gedacht ;))
    trotzdem vielen dank für die anweisungen!
    werd mal testen wie schnell/langsam die sind,

    mfg
    thomas

  • Guardian
    Punkte
    686
    Beiträge
    130
    • 29. April 2004 um 23:21
    • #4

    msdn durchsuchen nach

    • AbsolutePage
    • PageSize
  • bosie
    Punkte
    1.767
    Beiträge
    325
    • 29. April 2004 um 23:30
    • #5

    aber was hat das mit mssql zu tun?
    da erhalt ich ja erst wieder alle datensätze...

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum