我有一个假设的数据库,其中有1000个表。有些表有一个名为person_id
的字段。我想找出在整个数据库中有多少行,对于每个具有字段10
的表,其值为person_id
,而不必为每个表编写查询。这可以在单个SQL语句中完成吗?
答案 0 :(得分:0)
这是一个有效的动态SQL解决方案。我想从技术上讲它是一些语句,但是...我很想看看是否有人能提出一种在不带变量的单个语句中执行查询的方法,例如EXEC(CAST('...等,但我不确定您能做到这一点。
DECLARE @sql NVARCHAR(MAX)
SELECT @sql = CAST('SELECT SUM(c) as ttl FROM (' +
(SELECT STUFF((SELECT ' union all select count(*) c from ' + TABLE_NAME
+ ' where person_id = 10'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = 'person_id'
FOR XML PATH('')), 1, 10, '')) + ')sq' AS NVARCHAR(MAX))
EXEC sp_executesql @sql