1153 Stimmen

Eine Spalte ausschließen mit SELECT * [except columnA] FROM tableA?

Wir alle wissen, dass wir alle Spalten einer Tabelle auswählen können, wenn wir

SELECT * FROM tableA

Gibt es eine Möglichkeit, Spalten aus einer Tabelle auszuschließen, ohne dass alle Spalten angegeben werden müssen?

SELECT * [except columnA] FROM tableA

Die einzige Möglichkeit, die ich kenne, besteht darin, alle Spalten manuell anzugeben und die unerwünschte Spalte auszuschließen. Das ist sehr zeitaufwändig, daher suche ich nach Möglichkeiten, Zeit und Mühe zu sparen, und auch für die künftige Wartung, wenn die Tabelle mehr oder weniger Spalten hat.

59 Stimmen

Es wäre sehr praktisch, diese Funktion zu haben, nicht um sie in den Produktionscode einzubauen, sondern für die Fehlersuche. Beispiel: Ich habe eine Tabelle mit mehreren Spalten, die ich abfrage, aber ich möchte schnell eine oder zwei Textspalten auslassen.

0 Stimmen

Ich brauchte dies, als ich mit openquery arbeitete (obwohl ich die Funktionalität in MySQL und nicht in SQL Server benötigte). Ich musste eine MySQL-Datenbank mit SQL Server abfragen. Da eine MySQL-Tabelle Char-Spalten mit fester Breite hatte, konnte ich keine SELECT * Abfrage (OLE DB hat Probleme, diese zuzuordnen). Ich konnte die richtigen Spalten nicht angeben, da ich keinen direkten Zugriff auf die MySQL-Datenbank hatte, aber SQL Server war so freundlich, mir die Namen der Char-Spalten mit fester Breite mitzuteilen...

9 Stimmen

Ich möchte noch einen weiteren Grund hinzufügen, dies zu tun: SELECT DISTINCT * außer für die Schlüsselspalte, damit sie ohne doppelte Zeilen funktioniert, die jemand anderes erstellt hat

-1voto

Guffa Punkte 663241

Nein, das ist nicht möglich, und es gibt auch keinen guten Grund, es zu tun.

Bei der Auswahl von Daten sollten Sie niemals * sollten Sie immer die Felder angeben, die Sie benötigen. Der Grund dafür ist, dass Sie möchten, dass die Abfrage auch dann noch funktioniert, wenn Sie der Tabelle später ein weiteres Feld hinzufügen. Außerdem geben Sie die Reihenfolge der Felder im Ergebnis an, damit das Umordnen von Feldern in der Tabelle das Ergebnis nicht verändert.

Das Gleiche gilt natürlich auch für * except wenn dies möglich wäre.

-1voto

Felix Punkte 31

Wenn irgendjemand hier MySql benutzt, so wie ich es tat, benutzen Sie dies:

CREATE TABLE TempTable AS SELECT * FROM #YourTable; 

ALTER TABLE TempTable 
DROP COLUMN #YourColumn; 

SELECT * FROM TempTable; 
DROP TABLE TempTable;

-1voto

user3904583 Punkte 17

Das spart keine Zeit beim Laden aus der Datenbank. Aber Sie können die Spalte, die Sie nicht in dem Array, in dem sie platziert ist, haben möchten, jederzeit deaktivieren. Ich hatte mehrere Spalten in einer Tabelle, wollte aber eine bestimmte nicht haben. Ich war zu faul, sie alle in der SELECT-Anweisung auszuschreiben.

$i=0;
$row_array = array();

while($row = mysqli_fetch_assoc($result)){

  $row_array[$i]=$row;
  unset($row_array[$i]['col_name']);
  $i++;
}

-2voto

David Tinsley Punkte 1

Einfache Lösung. Suchen Sie in SSMS Ihre Tabelle, klicken Sie mit der rechten Maustaste darauf und wählen Sie "Script Table As" und dann "Select To". Die Abfrage wird mit jeder aufgelisteten Spalte ausgeschrieben. Kommentieren Sie die Spalte aus oder löschen Sie sie, die Sie nicht wollen. Eine sehr schnelle und einfache Lösung, um eine Spalte zu ignorieren.

-3voto

panda695 Punkte 25

Sie können die REGEX-Spalten-Spezifikation verwenden.

Die folgende Abfrage wählt alle Spalten außer ds und hr aus SELECT (ds|hr)?+.+ VON Verkäufen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X