【问题标题】:Information Schema Duplicates - Specify which database to query in SELECTInformation Schema Duplicates - 指定要在 SELECT 中查询的数据库
【发布时间】:2018-02-06 09:33:57
【问题描述】:

我的服务器上有两个名称不同的数据库,但它们都有一个标题为Clients 的表。当我运行信息模式查询时,它会从两个数据库中返回列,所以当我只想要一个时,我会得到重复。

例子:

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

我得到了重复的列,所以First_Name 出现了两次,因为它正在返回两个数据库中Clients 表中的列。

我的问题是:

有没有一种方法可以在 SELECT 语句中指定要查询的数据库,以便它只返回我想要的列?例如:

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

【问题讨论】:

    标签: mysql information-schema


    【解决方案1】:

    您正在寻找TABLE_SCHEMA 列。

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

    仅供参考,这就是我做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    |       |
    +--------------------------+---------------------+------+-----+---------+-------+
    

    【讨论】:

      猜你喜欢
      • 2019-07-19
      • 1970-01-01
      • 1970-01-01
      • 2019-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-11
      相关资源
      最近更新 更多