1

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

field1 
field2

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

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

TABLE1
field1 field2 field3

TABLE2
field2 field4

TABLE3
field1 field3

TABLE4
field1 field2

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

TABLE1
TABLE4

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

谢谢你的帮助

4

2 回答 2

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'

注意:代码是直接写在这里的,没有经过测试。

于 2015-04-30T14:49:29.513 回答
0

用这个:

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

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

于 2015-04-30T14:54:41.723 回答