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:
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 .
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 *
).
Sie können dies nicht direkt in MySQL tun, Sie müssen dies serverseitig tun. In PHP könnte das so aussehen:
%Vor%Tags und Links mysql