Mysql bekomme alle in der Bedingung beschriebenen Sätze, auch wenn sie in der Tabelle nicht existieren

8

Überlege, ob ich eine Tabelle wie die folgende habe:

my_table

%Vor%

Und sagen, ich habe eine Anfrage wie diese

%Vor%

Ist es möglich, die Ausgabe wie folgt zu erhalten, indem Sie die Abfrage ändern.

%Vor%

Ich habe versucht, Self JOIN und andere Bedingungen zu verwenden und googelte auch viel, fand aber keine Lösung.

Kann jemand eine Lösung vorschlagen?

    
웃웃웃웃웃 20.12.2014, 06:58
quelle

3 Antworten

9

Leider hat mysql keine eingebaute Funktion, die eine Reihe erzeugt, wie es viele andere Datenbanken tun). Es gibt (mindestens) zwei Möglichkeiten, dies zu tun:

Hard-Code die gewünschten Werte als Unterabfrage, dann Links Join zu Ihrer Tabelle:

%Vor%

Aber das ist mühsam und schwer zu programmieren und zu warten.

Oder (wie ich es vorher getan habe) eine Tabelle erstellen (einmal) und mit natürlichen Zahlen (einmal) füllen, um sie als Proxy-Seriengenerator zu verwenden:

%Vor%

dann:

%Vor%

Einmal eingerichtet und mit vielen Zahlen bestückt, ist dieser Ansatz sehr praktisch.

Sie können eine ähnliche Tabelle mit Daten erstellen, die auf ähnliche Weise verwendet werden, was sehr praktisch ist, um Zahlen für jedes Datum in einem Bereich zu erstellen, wenn nicht alle Daten Daten enthalten.

    
Bohemian 23.12.2014, 05:31
quelle
2

Sie können eine Nummernserie erstellen, ohne eine zusätzliche Tabelle erstellen zu müssen oder ohne Bedingungen für jede zu durchsuchende Werte schreiben zu müssen. Sie können eine Variable rownum verwenden, initialisieren mit Wert 0 & amp; Erhöhen Sie den Wert um 1, um eine Serie mithilfe von "Limit" zu erstellen. Ich habe die Tabelle INFORMATION_SCHEMA.COLUMNS verwendet, damit Sie eine große Serie erstellen können (Sie können jede größere Tabelle verwenden, die Sie in Ihrer DB haben oder eine Tabelle, die groß genug für Ihre Bedürfnisse ist).

SQL Fiddle

MySQL 5.6.6 m9 Schema-Setup :

%Vor%

Abfrage 1 :

%Vor%

Ergebnisse :

%Vor%     
Fabien TheSolution 23.12.2014 05:49
quelle
0

Sie können Klausel IN verwenden, wie Sie es getan haben und wie Sie hier sehen können Ссылка

Ich habe einen Test von mir selbst durchgeführt und es gab den Namen wie erwartet von 1 bis 4, aber wenn ich die eine ID setzen, die nicht existiert mysql Abfrage wird nichts für diese ID zurückgeben, weil es nicht in der Datenbank existiert.

%Vor%

Wenn Sie diese Tabelle wirklich wollen, könnten Sie eine gespeicherte Prozedur ausprobieren, um die Ausgabetabelle zu formatieren. Hier erfahren Sie mehr darüber. Ссылка und hier 'IF' in 'SELECT' Anweisung - Wählen Sie den Ausgabewert basierend auf den Spaltenwerten

    
zwitterion 23.12.2014 06:01
quelle

Tags und Links