我知道可以选择包含特定列名的表,其中包含以下查询:
SELECT t.name,
c.name
FROM sys.tables t
INNER JOIN sys.columns c
ON c.object_id=t.object_id
WHERE c.name like '%colname%'
有没有办法找到包含2个或更多给定列的表?
举个例子,我想找的是所有具有特定列的表:学生和老师。
答案 0 :(得分:6)
按唯一内容进行分组,并计算having
子句
select t.name from sys.tables t inner join sys.columns c on c.object_id=t.object_id where c.name in ('student','teacher') group by t.name having count(distinct c.name) = 2
答案 1 :(得分:4)
例如,我有一个名为组织的数据库。我有多个表格,其中包含 tax_id 列。
大多数情况下,我们必须从整个数据库中找到这样一个列。 解决方案如下:
select table_name,column_name from information_schema.columns
where column_name like '%tax%'
在查询数据库名称时,您只需要更改愿意列名,并找到所需的结果
搜索任何值与整个数据库中的计算机一样,在哪个列和哪些表中计算计算机是否存在
首先我们需要编写一个存储过程,然后我们将它重用于我们的搜索,我从http://vyaskn.tripod.com/search_all_columns_in_all_tables.htm得到它非常完美的结果。 执行商店程序后,我们得到了所需的结果,如下图所示。 图像显示整个数据库中关键字计算机的完整搜索结果。