Ich versuche, eine Select-Anweisung zu verwenden, um alle Spalten aus einer bestimmten MySQL-Tabelle außer einer abzurufen. Gibt es eine einfache Möglichkeit, dies zu tun?
EDIT: Es gibt 53 Spalten in dieser Tabelle (NICHT MEIN DESIGN)
Ich versuche, eine Select-Anweisung zu verwenden, um alle Spalten aus einer bestimmten MySQL-Tabelle außer einer abzurufen. Gibt es eine einfache Möglichkeit, dies zu tun?
EDIT: Es gibt 53 Spalten in dieser Tabelle (NICHT MEIN DESIGN)
Beim Ausprobieren der Lösungen von @Mahomedalid und @Junaid bin ich auf ein Problem gestoßen. Deshalb wollte ich es teilen. Wenn der Spaltenname Leerzeichen oder Bindestriche enthält, wie z. B. check-in, schlägt die Abfrage fehl. Die einfache Abhilfe ist die Verwendung von Backticks um die Spaltennamen herum. Die geänderte Abfrage lautet wie folgt
SET @SQL = CONCAT('SELECT ', (SELECT GROUP_CONCAT(CONCAT("`", COLUMN_NAME, "`")) FROM
INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'users' AND COLUMN_NAME NOT IN ('id')), ' FROM users');
PREPARE stmt1 FROM @SQL;
EXECUTE stmt1;
Wenn die Spalte, die Sie nicht auswählen wollten, eine große Datenmenge enthielt und Sie sie aus Geschwindigkeitsgründen nicht einbeziehen wollten und Sie die anderen Spalten häufig auswählen, würde ich vorschlagen, dass Sie eine neue Tabelle mit dem einen Feld, das Sie normalerweise nicht auswählen, mit einem Schlüssel zur ursprünglichen Tabelle erstellen und das Feld aus der ursprünglichen Tabelle entfernen. Verbinden Sie die Tabellen, wenn das zusätzliche Feld tatsächlich benötigt wird.
Sie könnten verwenden DESCRIBE meine_tabelle und verwenden Sie die Ergebnisse davon, um die SELECT-Anweisung dynamisch zu generieren.
Mein Hauptproblem sind die vielen Spalten, die ich beim Verbinden von Tabellen erhalte. Dies ist zwar nicht die Antwort auf Ihre Frage (wie wählt man alle, aber nur bestimmte Spalten aus eine Tabelle), denke ich, dass es erwähnenswert ist, dass Sie angeben können table.
um alle Spalten einer bestimmten Tabelle zu erhalten, anstatt nur die .
Hier ist ein Beispiel, wie dies sehr nützlich sein kann:
select users.\*, phone.meta\_value as phone, zipcode.meta\_value as zipcode
from users
left join user\_meta as phone
on ( (users.user\_id = phone.user\_id) AND (phone.meta\_key = 'phone') )
left join user\_meta as zipcode
on ( (users.user\_id = zipcode.user\_id) AND (zipcode.meta\_key = 'zipcode') )
Das Ergebnis sind alle Spalten aus der Tabelle users und zwei zusätzliche Spalten, die aus der Tabelle meta verbunden wurden.
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.