So verwenden Sie „union all“ in MySQL, um die Union-Sortierung zu erhalten

So verwenden Sie „union all“ in MySQL, um die Union-Sortierung zu erhalten

Manchmal kommt es in einem Projekt aus irreversiblen Gründen vor, dass die in der Tabelle gespeicherten Daten die Anzeigeanforderungen auf der Seite nicht erfüllen. Das vorherige Projekt hatte eine Funktion zum Anzeigen von Artikelinhalten. Artikel wurden in drei Zustände unterteilt: ausstehend, veröffentlicht und offline.

Die Werte des Felds (PROMOTE_STATUS), die zum Bestimmen des Status in der Datentabelle verwendet werden, sind 0, 1 bzw. 2. Die anfängliche Anforderung bestand darin, dass Artikel nur als ausstehend und veröffentlicht angezeigt werden, wobei „veröffentlicht“ vor „ausstehend“ aufgeführt wird und die beiden Zustände entsprechend ihren eigenen Umständen sortiert werden. Diese Implementierung ist relativ einfach und kann mit der folgenden Order-By-Anweisung erreicht werden.

Sortieren nach PROMOTE_STATUS desc, SEQUENCE_ID desc......

Nach dem Test des Produkts war man der Meinung, dass dies optimiert werden könnte und die Anzeige der Artikel in „Veröffentlicht“, „Zu veröffentlichen“ und „Offline“ geändert werden sollte (ja, „Offline“ war plötzlich erforderlich und wurde sehr stolz am Ende platziert). Was soll ich dann tun? Es ist definitiv nicht möglich, die entsprechenden Werte von PROMOTE_STATUS von „Release“, „Pending Release“ und „Offline“ auf 2, 1 und 0 zu ändern, da auch andere Kollegen diese Tabelle verwenden. Sollte sich hier die Korrespondenz ändern. Die Beurteilungslogik der Codes anderer Kollegen muss geändert werden.

Also dachte ich an eine Vereinigung aller Artikel und musste dann auch noch die Anzeigereihenfolge der Artikel in den drei Zuständen implementieren. Daher besteht die endgültige Idee darin, die Daten herauszufinden, wenn PROMOTE_STATUS jeweils 1, 0 und 2 ist, und sie dann entsprechend der Situation in jedem Status nacheinander zu sortieren und schließlich jede Teilmenge zur Anzeige an die Seite zurückzugeben, nachdem alle vereint wurden.

Die endgültige SQL-Anweisung lautet wie folgt:

wählen
    PROMOTE_ID,
    Sequenz-ID,
    PROMOTE_STATUS,
    PROMOTE_TITLE,
    VERÖFFENTLICHUNGSDATUM
    AUS (
      (WÄHLEN
        PROMOTE_ID,
    Sequenz-ID,
    PROMOTE_STATUS,
        PROMOTE_TITLE,
        VERÖFFENTLICHUNGSDATUM 
       VON SYS_TEXT_PROMOTE
       WO
         ENABLED_FLAG = "1"
         UND PROMOTE_STATUS=1
         UND SORT_ID = #{params.sortId}
         Sortieren nach SEQUENCE_ID DESC,LAST_UPDATE_DATE DESC) a)
Vereinigung alle
wählen
    PROMOTE_ID,
    Sequenz-ID,
    PROMOTE_STATUS,
    PROMOTE_TITLE,
    VERÖFFENTLICHUNGSDATUM
    AUS (
      (WÄHLEN
        PROMOTE_ID,
    Sequenz-ID,
    PROMOTE_STATUS,
        PROMOTE_TITLE,
        VERÖFFENTLICHUNGSDATUM 
       VON SYS_TEXT_PROMOTE
       WO
        ENABLED_FLAG = "1"
        UND PROMOTE_STATUS=2
        UND SORT_ID = #{params.sortId}
        Sortieren nach RELEASE_DATE DESC,LAST_UPDATE_DATE DESC) b)
Vereinigung alle
wählen
    PROMOTE_ID,
    Sequenz-ID,
    PROMOTE_STATUS,
    PROMOTE_TITLE,
    VERÖFFENTLICHUNGSDATUM
    AUS (
      (WÄHLEN
        PROMOTE_ID,
    Sequenz-ID,
    PROMOTE_STATUS,
        PROMOTE_TITLE,
        VERÖFFENTLICHUNGSDATUM 
       VON SYS_TEXT_PROMOTE
        WO
        ENABLED_FLAG = "1"
        UND PROMOTE_STATUS=0
        UND SORT_ID = #{params.sortId}
        Sortieren nach RELEASE_DATE DESC,LAST_UPDATE_DATE DESC) c)

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • MySQL Union-Syntax-Codebeispielanalyse
  • Studie zu den Standardregeln des mySQL UNION-Operators
  • Grundlegende Verwendung von UNION und UNION ALL in MySQL
  • Kurze Analyse von MySQL Union und Union All
  • So führen Sie in MySQL mehrere Datenzeilen zu einer Zeile zusammen
  • MySQL verwendet Union, um die Daten zweier Tabellen zusammenzuführen und anzuzeigen

<<:  So überwachen Sie den Linux-Serverstatus

>>:  Detaillierte Erklärung des VueRouter-Routings

Artikel empfehlen

9 großartige JavaScript-Framework-Skripte zum Zeichnen von Diagrammen im Web

9 großartige JavaScript-Framework-Skripte zum Zei...

Implementierung von Nginx-Weiterleitungsübereinstimmungsregeln

1. Regulärer Ausdrucksabgleich ~ für Groß- und Kl...

Natives JS zum Erstellen eines verschiebbaren Anmeldefelds

Dieser Artikel zeigt ein verschiebbares Anmeldefe...

Detaillierte Erläuterung der Anwendung der vier Zustände der Hyperverbindung

Obwohl Sie denken, dass es sich möglicherweise um...

Problem beim Testen des nicht autorisierten Zugriffs auf Zookeeper

Inhaltsverzeichnis Vorwort Erkennen des geöffnete...

MySQL-langsame Abfrage pt-query-digest Analyse des langsamen Abfrageprotokolls

1. Einleitung pt-query-digest ist ein Tool zum An...

Schritte eines hervorragenden Registrierungsprozesses

Für eine Website ist dies die grundlegendste Funkt...

SASS Style Programmierhandbuch für CSS

Da immer mehr Entwickler SASS verwenden, müssen w...

Installieren des Ping-Tools in einem von Docker erstellten Container

Denn die von Docker abgerufenen Basisimages wie C...

Lösung für Fremdschlüsselfehler bei der MySQL-Tabellenerstellung

Datenbanktabelle A: Tabelle erstellen Task_Desc_T...

Vue implementiert Mehrfachauswahl im unteren Popup-Fenster

In diesem Artikelbeispiel wird der spezifische Co...

Lösung für die Lücke zwischen Divs

Wenn Sie HTML-Div-Blöcke verwenden und die Mitte ...