如何查找包含列和列的所有表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何查找包含列和列的所有表相关的知识,希望对你有一定的参考价值。

我希望实现以下目标:

SELECT DISTINCT TABLE_NAME 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE 'columnA'
AND COLUMN_NAME LIKE 'columnB';

但是这个特定的查询将返回0个巧合。

答案

information_schema.columns中的每一行代表一个列 - 它不能同时是columnAcolumnB。一种方法可能是计算表中此类列的数量,并检查返回两个结果:

SELECT   table_name
FROM     information_schema.columns
WHERE    column_name IN ('COLUMNA', 'COLUMNB')
GROUP BY table_name
HAVING   COUNT(*) = 2
另一答案

你应该使用OR而不是..

SELECT DISTINCT TABLE_NAME 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE 'columnA'
OR COLUMN_NAME LIKE 'columnB';

不可能在同一行中一列包含'列'和'列'

但是如果你需要两个表名,你可以使用内连接

SELECT DISTINCT C1.TABLE_NAME 
FROM INFORMATION_SCHEMA.COLUMNS C1
INNER JOIN (
  SELECT DISTINCT TABLE_NAME 
   FROM INFORMATION_SCHEMA.COLUMNS 
   WHERE COLUMN_NAME LIKE 'columnB'
) C2 ON C1.TABLE_NAME = C2.TABLE_NAME
WHERE C2.COLUMN_NAME LIKE 'columnA'

以上是关于如何查找包含列和列的所有表的主要内容,如果未能解决你的问题,请参考以下文章

获取数据库中用户表所有列和列的数据类型

按组和列之间查找最小值

列出我的数据库中的所有表和列 (ORACLE)

如何检索所有表列、数据类型、数据长度、约束类型以及引用的列和表

sql 查找包含指定名称列的所有表

sql 所有表和列的视图