2015-04-03 30 views
2

我想查找mySQL数据库中具有两列'zoneid'和'affiliateid'的所有表格。如何查找具有两列或更多列的mySQL数据库中的所有表格

如果我使用下面的查询,它会给我具有任一列的表格。我想找出表有两列

SELECT DISTINCT TABLE_NAME 
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE COLUMN_NAME IN ('affiliateid','zoneid') 
     AND TABLE_SCHEMA='openx'; 

我试图像

SELECT DISTINCT TABLE_NAME 
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE COLUMN_NAME IN ('affiliateid') AND COLUMN_NAME IN ('zoneid') 
     AND TABLE_SCHEMA='openx'; 

书面查询,但它不工作

+0

'SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE'%AFFILIATEID%工会 SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE'%zoneid%'' – Ghostman 2015-04-03 06:41:35

+0

它产生相同的结果,显示有'zoneid'或'affiliateid'的表,但不是两个 – 2015-04-03 06:52:01

+0

检查更新的答案 – Ghostman 2015-04-03 06:52:58

回答

1
SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME ='affiliateid' union SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE 'zoneid' 

SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME ='affiliateid' union all SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE 'zoneid' 

或类似于

SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE '%affiliateid%' union all SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE '%zoneid%' 
0

试试这个:

SELECT name FROM sysobjects WHERE id IN 
(SELECT id FROM syscolumns WHERE name = 'affiliateid') 
and id in 
(SELECT id FROM syscolumns WHERE name = 'zoneid') 

OR

select t.name 
from sys.tables t 
inner join sys.columns c on c.object_id=t.object_id 
where c.name in ('zoneid','affiliateid') 
group by t.name 
having count(distinct c.name) = 2 
+0

它不起作用,它是给我的桌子哪些只有zoneid,或者只有affiliateid,但没有两个列的表,我需要找到两个列在单个表中的表格 – 2015-04-03 06:54:40

+0

@JyotsnaGupta: - 请检查更新的答案。它一定会奏效。谢谢 – 2015-04-03 06:57:30

+0

查询:SELECT name FROM sysobjects WHERE id IN(SELECT id FROM syscolumns WHERE name ='affiliateid')and id in(SELECT id FROM sy ... 错误代码:1146 表'openx.sysobjects'不存在 – 2015-04-03 07:04:10

0

可以使用。

SELECT table_schema, table_name, count(*) AS `Tcount` FROM INFORMATION_SCHEMA.`COLUMNS` 
WHERE `column_name` IN ('affiliateid','zoneid') 
GROUP BY table_schema, table_name 
HAVING `Tcount` = 2 

中,Tcount应该是平等的号码,你找列。如果是这样,那么你的表都需要的列

0

这个工作对我来说:

SELECT DISTINCT C1.TABLE_NAME 
FROM INFORMATION_SCHEMA.COLUMNS C1 
INNER JOIN INFORMATION_SCHEMA.COLUMNS C2 
ON C2.TABLE_NAME=C1.TABLE_NAME 
AND C1.COLUMN_NAME='zoneid' 
AND C2.COLUMN_NAME='affiliateid' 
AND C1.TABLE_SCHEMA='openx' AND C2.TABLE_SCHEMA='openx' 
相关问题