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)
Es gibt tatsächlich eine Möglichkeit, für die Sie natürlich die entsprechenden Berechtigungen haben müssen ...
SET @sql = CONCAT('SELECT ', (SELECT REPLACE(GROUP_CONCAT(COLUMN_NAME), '<columns_to_omit>,', '') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '<table>' AND TABLE_SCHEMA = '<database>'), ' FROM <table>');
PREPARE stmt1 FROM @sql;
EXECUTE stmt1;
Ersetzen von <table>, <database> and <columns_to_omit>
(Versuchen Sie dies nicht auf einem großen Tisch, das Ergebnis könnte... überraschend sein!)
TEMPORÄRE TABELLE
DROP TABLE IF EXISTS temp_tb;
CREATE TEMPORARY TABLE ENGINE=MEMORY temp_tb SELECT * FROM orig_tb;
ALTER TABLE temp_tb DROP col_a, DROP col_f,DROP col_z; #// MySQL
SELECT * FROM temp_tb;
Die DROP-Syntax kann für Datenbanken unterschiedlich sein @Denis Rozhnev
Soweit ich weiß, gibt es das nicht. Sie können etwas tun wie:
SELECT col1, col2, col3, col4 FROM tbl
und wählen Sie manuell die gewünschten Spalten aus. Wenn Sie jedoch viele Spalten benötigen, können Sie einfach eine:
SELECT * FROM tbl
und ignorieren Sie einfach, was Sie nicht wollen.
In Ihrem speziellen Fall würde ich vorschlagen:
SELECT * FROM tbl
es sei denn, Sie wollen nur ein paar Spalten. Wenn Sie nur vier Spalten wollen, dann:
SELECT col3, col6, col45, col 52 FROM tbl
wäre in Ordnung, aber wenn Sie 50 Spalten wollen, dann würde jeder Code, der die Abfrage macht, (zu?) schwer zu lesen sein.
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.