查找包含两个已知列名的table_name

时间:2014-09-28 15:30:15

标签: sql sql-server

我想在一个表中找到包含两列的表。我试过这个:

SELECT COLUMN_NAME, TABLE_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE COLUMN_NAME in ('CurrencyName', 'CurrencyKey');

此查询会生成包含CurrencyNameCurrencyKey列之一的所有表。

但我希望将这两个列放在一起的表格。

请拍一些想法。

谢谢!

1 个答案:

答案 0 :(得分:1)

你很亲密。您想使用group by,然后使用having子句验证您有两个匹配项:

SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME in ('CurrencyName', 'CurrencyKey')
GROUP BY TABLE_NAME
HAVING COUNT(*) = 2;

注意:为了确保您拥有正确的表格,您应该在查询中使用TABLE_SCHEMA