T-SQL - 对具有相同列名的多个表进行操作的查询

时间:2015-01-23 18:20:31

标签: sql sql-server tsql

我正在尝试对SQL Server数据库进行一些调查和报告,我的目标似乎很简单,但我的大脑并没有把它整合在一起。

目标是查找在特定日期之前创建的每个表中的记录总数。数据库中的大多数(但不是全部)表都有一个列"已创建",因此我只需找到具有该列的所有表并对其运行查询。

我可以通过以下方式轻松找到所有合适的表名:

select table_name from INFORMATION_SCHEMA.COLUMNS where column_name = 'created'

下一步是将其与:

结合起来
select count(*) from ... where created <= date_i_care_about

有没有简单的方法可以在没有循环的情况下执行此操作?

1 个答案:

答案 0 :(得分:1)

如果这是一次性工作(不用于自动化),我认为你可以复制结果 以下查询并执行它:

DECLARE @date AS DATETIME
SET @date = '2014-01-01'
SELECT 'SELECT ''' + OBJECT_NAME(object_id) + ''' AS [Table], COUNT(*) AS [Count] FROM [' + OBJECT_NAME(object_id) + '] WHERE [created] <= ''' + CONVERT(VARCHAR, @date, 20) + '''' FROM sys.columns WHERE name = 'created'

希望这会有所帮助......