Holt die vorherige und nächste Zeile aus Zeilen, die mit (WHERE) Bedingungen ausgewählt wurden

7

Ich habe einen Tisch wie diesen

Zum Beispiel habe ich diese Aussage:

%Vor%

Diese Anweisung wird wie diese Tabelle nach Wörtern aufgeteilt

%Vor%

Ich möchte den vorherigen und nächsten Wert desselben Wortes erhalten

Zum Beispiel möchte ich das vorherige und nächste Wort von "name" erhalten:

%Vor%

Wie kann ich das tun?

    
mahdi yousefi 23.11.2014, 06:52
quelle

7 Antworten

14

Sie haben Ihr DBMS nicht angegeben, daher ist ANSI SQL:

%Vor%

SQLFiddle: Ссылка

    
a_horse_with_no_name 23.11.2014, 09:53
quelle
3

Ohne Unterabfragen:

%Vor%     
Will 23.11.2014 07:52
quelle
1

Versuchen Sie es

%Vor%     
Pரதீப் 23.11.2014 07:01
quelle
1

Hier ist ein anderer Ansatz, wenn Sie möchten, dass die Auswahl schnell ist. Es braucht ein bisschen Vorbereitung.

  • Erstellen Sie eine neue Spalte (z. B. "Phrase") in der Datenbank, die die Wörter enthält Sie wollen. (d. h. das vorherige, das aktuelle und das nächste).

  • Schreiben Sie einen Trigger, der beim Einfügen das neue Wort an das vorherige anfügt Zeile und fügt das Wort der vorherigen Zeile dem Wort und der Füllung der neuen Zeile hinzu Phrase.

  • Wenn sich die einzelnen Wörter ändern können, benötigen Sie einen Auslöser für die Aktualisierung, um die Phrase synchron zu halten.

Wählen Sie dann die Phrase aus. Sie erhalten viel bessere Geschwindigkeit, aber auf Kosten von zusätzlichem Speicher und langsamer Einfügung und härterer Wartbarkeit. Offensichtlich müssen Sie die Phrasespalte für die vorhandenen Datensätze aktualisieren, aber Sie haben die SQL, um das in den anderen Antworten zu tun.

    
mlinth 24.11.2014 10:29
quelle
1

Verwenden Sie Join , um das erwartete Ergebnis für SQL Server 2005 plus zu erhalten.

%Vor%

Ergebnis:

Fiddler Demo

    
Saravana Kumar 26.11.2014 03:34
quelle
1

Warum gab Niemand die einfache Antwort?

%Vor%     
Nick P 16.08.2017 10:23
quelle
-1

Ich erstelle einen Index für meine Wortspalte und setze diesen Code, um das Ergebnis schnell zu erhalten:

%Vor%     
mahdi yousefi 03.12.2014 06:03
quelle