1051 Stimmen

Wie kann ich alle Tabellen in MySQL finden, die bestimmte Spaltennamen enthalten?

Ich habe 2-3 verschiedene Spaltennamen, die ich in der gesamten Datenbank nachschlagen und alle Tabellen auflisten möchte, die diese Spalten haben. Gibt es ein einfaches Skript?

1 Stimmen

17voto

oucil Punkte 3804

Für diejenigen, die nach dem umgekehrten Weg suchen, d.h. nach Tabellen, die einen bestimmten Spaltennamen nicht enthalten, ist hier die Abfrage...

SELECT DISTINCT TABLE_NAME FROM information_schema.columns WHERE 
TABLE_SCHEMA = 'your_db_name' AND TABLE_NAME NOT IN (SELECT DISTINCT 
TABLE_NAME FROM information_schema.columns WHERE column_name = 
'column_name' AND TABLE_SCHEMA = 'your_db_name');

Dies erwies sich als sehr nützlich, als wir begannen, langsam die Verwendung von InnoDBs speziellen ai_col Spalte und musste herausfinden, welche unserer 200 Tabellen noch nicht aktualisiert worden waren.

15voto

António Delgado Punkte 139

Verwenden Sie diese einzeilige Abfrage. Ersetzen gewünschte_spalte_name durch den Namen Ihrer Spalte.

SELECT TABLE_NAME FROM information_schema.columns WHERE column_name = 'desired_column_name';

12voto

Wenn Sie "nur alle Tabellen abrufen" möchten, verwenden Sie diese Abfrage:

SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME like '%'
and TABLE_SCHEMA = 'tresbu_lk'

Wenn Sie "alle Tabellen mit Spalten" abrufen wollen, verwenden Sie diese Abfrage:

SELECT DISTINCT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE column_name LIKE '%'
AND TABLE_SCHEMA='tresbu_lk'

10voto

love2code Punkte 442
select distinct table_name 
from information_schema.columns 
where column_name in ('ColumnA') 
    and table_schema='YourDatabase';
    and table_name in 
    (
        select distinct table_name 
        from information_schema.columns 
        where column_name in ('ColumnB')
              and table_schema='YourDatabase';
    );

Das ^^ ergibt die Tabellen mit ColumnA et SpalteB anstelle von SpalteA ou SpalteB wie die akzeptierte Antwort

1 Stimmen

Funktioniert das überhaupt? Was ist mit dem ersten Semikolon? Auf jeden Fall wäre eine Erklärung angebracht. Zum Beispiel, was ist das Wesentliche daran? Mit welcher Version von MySQL haben Sie es getestet? Etc. Bitte antworten Sie bis Bearbeitung (Änderung) Ihrer Antwort , nicht hier in den Kommentaren ( ohne "Bearbeiten:", "Aktualisieren:" oder ähnlich - die Antwort sollte so aussehen, als wäre sie heute geschrieben worden).

5voto

nageen nayak Punkte 1175
SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE '%city_id%' AND TABLE_SCHEMA='database'

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