2017-08-29 3 views
0

J'ai deux bases de données sur mon serveur avec des noms différents, mais les deux ont une table intitulée Clients. Lorsque j'exécute une requête de schéma d'informations, elle renvoie des colonnes des deux bases de données, ce qui fait que je reçois des doublons lorsque j'en veux un.Duplication des schémas d'informations - Spécifiez la base de données à interroger dans SELECT

Exemple:

SELECT COLUMN_NAME FROM information_schema.COLUMNS 
WHERE table_name = 'Clients' 

Je reçois des colonnes en double alors First_Name est montrant deux fois parce qu'il retourne les colonnes de la table Clients dans les deux bases de données.

Ma question est:

est-il un moyen de spécifier quelle base de données à interroger dans les instructions SELECT afin qu'il ne retourne que la colonne de celui que je veux? Par exemple:

SELECT COLUMN_NAME FROM information_schema.COLUMNS 
WHERE db_name = 'DB1' AND table_name = 'Clients' 

Répondre

1

Vous êtes à la recherche de la colonne TABLE_SCHEMA.

SELECT COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE 
    TABLE_SCHEMA = 'DB1' AND 
    TABLE_NAME = 'Clients' 

Tout comme un FYI, ce que je reçois quand je fais desc INFORMATION_SCHEMA.COLUMNS;

+--------------------------+---------------------+------+-----+---------+-------+ 
| Field     | Type    | Null | Key | Default | Extra | 
+--------------------------+---------------------+------+-----+---------+-------+ 
| TABLE_CATALOG   | varchar(512)  | NO |  |   |  | 
| TABLE_SCHEMA    | varchar(64)   | NO |  |   |  | 
| TABLE_NAME    | varchar(64)   | NO |  |   |  | 
| COLUMN_NAME    | varchar(64)   | NO |  |   |  | 
| ORDINAL_POSITION   | bigint(21) unsigned | NO |  | 0  |  | 
| COLUMN_DEFAULT   | longtext   | YES |  | NULL |  | 
| IS_NULLABLE    | varchar(3)   | NO |  |   |  | 
| DATA_TYPE    | varchar(64)   | NO |  |   |  | 
| CHARACTER_MAXIMUM_LENGTH | bigint(21) unsigned | YES |  | NULL |  | 
| CHARACTER_OCTET_LENGTH | bigint(21) unsigned | YES |  | NULL |  | 
| NUMERIC_PRECISION  | bigint(21) unsigned | YES |  | NULL |  | 
| NUMERIC_SCALE   | bigint(21) unsigned | YES |  | NULL |  | 
| DATETIME_PRECISION  | bigint(21) unsigned | YES |  | NULL |  | 
| CHARACTER_SET_NAME  | varchar(32)   | YES |  | NULL |  | 
| COLLATION_NAME   | varchar(32)   | YES |  | NULL |  | 
| COLUMN_TYPE    | longtext   | NO |  | NULL |  | 
| COLUMN_KEY    | varchar(3)   | NO |  |   |  | 
| EXTRA     | varchar(30)   | NO |  |   |  | 
| PRIVILEGES    | varchar(80)   | NO |  |   |  | 
| COLUMN_COMMENT   | varchar(1024)  | NO |  |   |  | 
| GENERATION_EXPRESSION | longtext   | NO |  | NULL |  | 
+--------------------------+---------------------+------+-----+---------+-------+