Ja und nein :-)
SQL selbst kümmert sich nicht darum, was Reihenfolge die Spalten kommen in, aber wenn Sie verwenden waren:
select age, name, sex from ...
finden Sie würden, dass sie wahrscheinlich kam in dieser Reihenfolge heraus (obwohl ich nicht sicher bin, dass SQL-Standards dies vorschreiben).
Jetzt können Sie nicht wollen, das zu tun, aber manchmal das Leben ist nicht fair :-)
Sie haben auch die andere Möglichkeit, die DBMS Datendefinitionstabellen verwenden, um dynamisch eine Abfrage zu erstellen. Dies ist nicht portierbar, aber die meisten DBMS liefern diese Tabelle (wie SYSIBM.SYSCOLUMNS
von DB/2) und Sie können die Spaltennamen von dort in einer geordneten Weise auswählen. Etwas wie:
select column_name from sysibm.syscolumns
where owner = 'pax' and table_name = 'movies'
order by column_name;
Dann nutzen Sie die Ergebnisse dass Abfrage die reale Abfrage zu erstellen:
query1 = "select column_name from sysibm.syscolumns" +
" where owner = 'pax' and table_name = 'movies'" +
" order by column_name"
rs = exec(query1)
query2 = "select"
sep = " "
foreach colm in rs:
query2 += sep + colm["column_name"]
sep = ", "
query2 += " from movies order by rating"
rs = exec(query2)
// Now you have the rs recordset with sorted columns.
Allerdings sollten Sie wirklich kritisch alle Anfragen prüfen, die *
wählen - in der überwiegenden Mehrheit von Fällen ist es unnötig und ineffizient. Und die Präsentation der Daten sollte wahrscheinlich von der Präsentationsschicht und nicht vom DBMS selbst vorgenommen werden - das DBMS sollte die Daten so effizient wie möglich zurückgeben.
hmm, ich denke, ich muss auf die gute alte Methode zurückgreifen, mich selbst zu sortieren :) –
Ich stimme damit überein, NIEMALS * im Produktionscode zu verwenden. Sie wissen nie, wenn jemand später eine Spalte hinzufügt, die NICHT aufgeführt werden sollte, zum Beispiel für die Sicherheit. Erstellen Sie die Abfrage immer so, dass nur die benötigten Spalten abgerufen werden. Und wenn Sie es dynamisch machen wollen, achten Sie darauf, dies für andere Entwickler sichtbar zu beachten. –
Eine weitere dieser, wenn die Verwendung von SQL-Ansichten * hat mehr Nebenwirkungen darin, wenn die zugrunde liegenden Tabellen geändert werden (neue oder entfernte Spalte) die Ansicht nicht aktualisiert, so dass es möglicherweise keine neuen Spalten angezeigt oder vorhandene Spalten möglicherweise ersetzt werden, wie die Ansicht wählt Spalte nach dem Index, den sie bei der Erstellung der Ansicht hatten. –