1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • 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
  • bosie
    13
    bosie
    Mitglied
    Reaktionen
    7
    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
    9
    mas
    Mitglied
    Reaktionen
    1
    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
    13
    bosie
    Mitglied
    Reaktionen
    7
    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
    8
    Guardian
    Mitglied
    Reaktionen
    1
    Punkte
    686
    Beiträge
    130
    • 29. April 2004 um 23:21
    • #4

    msdn durchsuchen nach

    • AbsolutePage
    • PageSize

    00010011100010001010100111000
    {a,b,b} = { *tilt* } :ahhh:

  • bosie
    13
    bosie
    Mitglied
    Reaktionen
    7
    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.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung