0
我有一组表的位置与他们的名字,如位置和位置的区域。我想编写一个quesry,首先从我的数据库中检索这些表名,然后获取它们的主键。我怎么做? [a_rahnema]。[dbo]是我的数据库的名称。查询检索数据库中的特定表的名称,并检索该表的主键
我有一组表的位置与他们的名字,如位置和位置的区域。我想编写一个quesry,首先从我的数据库中检索这些表名,然后获取它们的主键。我怎么做? [a_rahnema]。[dbo]是我的数据库的名称。查询检索数据库中的特定表的名称,并检索该表的主键
该查询会给你一个宽表包括主键内的表名,主键名,列,对于具有“位置”的所有表作为其名称的一部分:
select * from
INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc
inner join
INFORMATION_SCHEMA.KEY_COLUMN_USAGE kcu
on
tc.CONSTRAINT_CATALOG = kcu.CONSTRAINT_CATALOG and
tc.CONSTRAINT_SCHEMA = kcu.CONSTRAINT_SCHEMA and
tc.CONSTRAINT_NAME = kcu.CONSTRAINT_NAME
where
tc.CONSTRAINT_TYPE='PRIMARY KEY' and
tc.TABLE_NAME like '%Location%'
order by
tc.CONSTRAINT_CATALOG,
tc.CONSTRAINT_SCHEMA,
tc.CONSTRAINT_NAME,
kcu.ORDINAL_POSITION
您可能想要为实际查询限制更多列。
在编写SQL,我们鼓励你觉得在结果集作为一个整体而言,在告诉引擎你想,不怎么办呢什么方面。所以你通常不应该考虑“首先做这件事,然后我做下一件事,然后对于每个结果,我想做其他事情”。
'dbo'是数据库中默认模式的名称。它不是数据库名称的一部分。 – 2011-03-16 15:25:55
你是对的!我的错 – aaaaaaaaaaaa 2011-03-16 15:27:02