【问题标题】:SQL list all tables with certain column namesSQL 列出具有特定列名的所有表
【发布时间】:2015-04-30 14:42:48
【问题描述】:

我想对 MySQL 5.6 服务器进行 SQL 查询,以向我返回至少包含以下列名称的所有表:

field1 
field2

我在这里看到了一些例子,但它们只涵盖了只有一个列名或多个可能的列名之间的一个。

例如,如果我有这 4 个表:

TABLE1
field1 field2 field3

TABLE2
field2 field4

TABLE3
field1 field3

TABLE4
field1 field2

由于我正在查询至少具有“field1”AND“field2”的表,因此结果应该是:

TABLE1
TABLE4

我尝试使用 INFORMATION_SCHEMA.COLUMNS 表进行自联接,但我无法正确...

感谢您的帮助

【问题讨论】:

标签: mysql sql columnname


【解决方案1】:

试试这个:

SELECT DISTINCT T1.TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS T1
INNER JOIN INFORMATION_SCHEMA.COLUMNS T2 ON(T1.TABLE_NAME = T2.TABLE_NAME)
WHERE T1.COLUMN_NAME = 'field1'
AND T2.COLUMN_NAME = 'field2'

注意:这里直接写代码,没有测试。

【讨论】:

  • 啊,你是对的!我这样做了,但我忘记将 T1 放入 SELECT DISTINCT T1.TABLE_NAME :_D 谢谢!!!
  • T2..COLUMN_NAME 上的小错字
【解决方案2】:

使用这个:

SELECT DISTINCT TABLE_NAME
FROM information_schema.COLUMNS 
WHERE COLUMN_NAME = 'field1' OR COLUMN_NAME = 'field2'

这应该返回 EVERY 表名,其中包含名为“field1”或“field2”的列。

【讨论】:

  • OP 希望每个表都有两列,而不是任何一列。
猜你喜欢
  • 2022-10-12
  • 2016-12-29
  • 2014-11-04
  • 1970-01-01
  • 2011-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-04
相关资源
最近更新 更多