wähle die ersten N Spalten der MySQL-Tabelle

7

Da es möglich ist, die obersten N Zeilen aus der Tabelle auszuwählen, gibt es eine Möglichkeit, die ersten N Spalten aus MySQL Datenbanktabellen auszuwählen? Danke für deine Antworten und vielleicht ein paar Teile des Codes in PHP.

    
parsaeed 23.06.2013, 08:32
quelle

3 Antworten

11

Bitte werfen Sie zuerst einen Blick auf Bill Karwins Antwort . Aber wenn Sie wissen, wie Sie Ihre Spaltennamen sortieren, könnte es eine Lösung geben, die eine dynamische Abfrage verwendet.

Um alle Spaltennamen aus einer Tabelle auszuwählen, können Sie eine Abfrage wie folgt verwenden:

%Vor%

(bitte sehen Sie sich diese Antwort an). Und nutzen Sie GROUP_CONCAT :

%Vor%

Wir können alle Spaltennamen in einer einzelnen Zeile, getrennt durch Kommas, zurückgeben:

%Vor%

(Ich habe auch Zitate um den Namen der Spalte hinzugefügt, und bitte beachten Sie, dass wir unsere Spaltenliste irgendwie ordnen müssen, da sonst keine Garantie für die Reihenfolge besteht, in der Spaltennamen zurückgegeben werden).

Dann können wir die zurückgegebene Zeichenfolge unter Verwendung von SUBSTRING_INDEX , um zB die ersten 2 Spaltennamen zu erhalten:

%Vor%

und unsere letzte Abfrage, die 'SELECT ' , die oben ausgewählten Spalten und ' FROM Tab1' verkettet und die resultierende Zeichenfolge in die Variable @sql einfügt:

%Vor%

Der Wert wird in etwa so aussehen:

%Vor%

und Sie können dann Ihre Aussage vorbereiten und führe es aus:

%Vor%

Bitte siehe hier .

    
fthiella 23.06.2013, 09:44
quelle
12

SQL erfordert, dass Sie die gewünschten Spalten benennen oder das Platzhalterzeichen * verwenden.

In der Relationstheorie gibt es kein Konzept von "ersten N Spalten", da Spalten keine implizite Reihenfolge haben. Natürlich müssen sie bei jeder konkreten Implementierung von SQL eine Speicherreihenfolge haben, aber die SQL-Sprache unterstützt nicht das Holen von Spalten nach "Position" in der Tabelle, noch gibt es eine Unterstützung zum Abrufen von Sequenz von Spalten (außer für * ).

    
Bill Karwin 23.06.2013 08:40
quelle
1

Sie können dies nicht direkt in MySQL tun, Sie müssen dies serverseitig tun. In PHP könnte das so aussehen:

%Vor%     
Erik Schierboom 23.06.2013 09:00
quelle

Tags und Links