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

MySql wählt alle Tabellen mit mehreren spezifischen Spalten aus

Dies ist eine schnellere Version:

SELECT TABLE_NAME 
      FROM INFORMATION_SCHEMA.COLUMNS
      WHERE COLUMN_NAME IN ('columnA','columnB','columnC')
group by TABLE_NAME
having count(distinct COLUMN_NAME) = 3 

In der obigen Abfrage, die Zählung hat, wird es keine geben. der in IN angegebenen Spalten Satz.

oder versuchen Sie Folgendes (aber es wird für so viele Spalten zu einer Katastrophe führen. Vermeiden Sie es also)

SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME IN 
( SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = 'columnA' )
and TABLE_NAME in 
( SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = 'columnB')
and TABLE_NAME in 
( SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = 'columnC')