【发布时间】:2014-05-20 06:04:32
【问题描述】:
我想获取所有包含 3 个特定列的表名。
我想要的是从信息架构中获取所有表名,其中包含columnA AND columnB AND @987654324 @。
目前我正在使用类似的查询
SELECT DISTINCT TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME='columnA'
AND TABLE_SCHEMA='mysampledatabase';
如何扩展上述查询并选择包含列名columnA 和columnB 的表?
我遇到了this answer 和其他类似的答案。他们的回答如下:
SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME IN ('columnA','ColumnB') AND TABLE_SCHEMA='YourDatabase';
但是,他们选择具有 3 列之一的任何表。我相信这是因为WHERE COLUMN_NAME IN ('columnA','ColumnB','ColumnC'),我相信它等同于COLUMN_NAME = 'columnA' OR COLUMN_NAME = 'columnB' OR COLUMN_NAME = 'columnC'
我尝试将 WHERE 子句替换为 WHERE COLUMN_NAME='columnA' AND COLUMN_NAME='columnB' AND COLUMN_NAME='columnC' 显然不会返回任何结果,因为 COLUMN_NAME 一次只能是 1 个值!
【问题讨论】: