Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Platzhalter im Spaltennamen für MySQL

Nein, SQL bietet Ihnen keine Syntax für eine solche Auswahl.

Was Sie können fragen Sie MySQL nach einer Liste von Spaltennamen generieren Sie dann zuerst die SQL-Abfrage aus diesen Informationen.

SELECT column_name
FROM information_schema.columns
WHERE table_name = 'your_table'
    AND column_name LIKE 'word%'

Lassen Sie uns die Spaltennamen auswählen. Dann können Sie in Python Folgendes tun:

"SELECT * FROM your_table WHERE " + ' '.join(['%s = 1' % name for name in columns])

Anstelle der Zeichenfolgenverkettung würde ich die Verwendung von SQLAlchemy empfehlen stattdessen die SQL-Generierung für Sie übernehmen.

Wenn Sie jedoch nur die Anzahl der Spalten begrenzen, müssen Sie eine solche dynamische Abfrage überhaupt nicht durchführen. Die harte Arbeit für die Datenbank besteht darin, die Zeilen auszuwählen; Es macht kaum einen Unterschied, Ihnen 5 von 10 Spalten oder alle 10 zu senden.

Verwenden Sie in diesem Fall einfach einen "SELECT * FROM ..." und verwenden Sie Python, um die Spalten aus der Ergebnismenge auszuwählen.