我有很多表格,如:
A_names
(updated_at date)B_names
(updated_at date)C_names
(updated_at date)我想要数据库中'%names%'
之类的所有表格的max_date和表名最多
select * into #temp1
from INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME like '%names%'
怎么做..?提前谢谢
答案 0 :(得分:1)
试试这个: -
Select name ,modify_date from sys.tables
where name like '%names'
避免使用INFORMATION_SCHEMA.TABLES
代替使用目录视图。
答案 1 :(得分:0)
SELECT MAX(updated_at_date)
FROM table1
我对你的表名的描述有点困惑。无论如何,这是你选择最大日期的方式。
答案 2 :(得分:0)
动态创建SQL语句,然后运行该命令。
DECLARE @dml nvarchar(max) = N''
SELECT @dml += ' UNION ALL SELECT ''' + name + ''' AS tableName, MAX(updated_at) AS maxUpdated_at FROM '
+ QUOTENAME(name)
FROM sys.tables
WHERE name like '%names%'
PRINT @dml
SET @dml = STUFF(@dml, 1, 10, '')
EXEC sp_executesql @dml
没有STUFF功能的选项
DECLARE @dml nvarchar(max)
SELECT @dml = ISNULL(@dml + ' UNION ALL', '') + ' SELECT ''' + name + ''' AS tableName, MAX(updated_at) AS maxUpdated_at FROM '
+ QUOTENAME(name)
FROM sys.tables
WHERE name like '%names%'
EXEC sp_executesql @dml
答案 3 :(得分:0)
Probabaly Praveen的答案是解决您的问题,但是在伪代码中
DECLARE @SqlStmt NVARCHAR(2000)
For Each TableName in 'Select name from sys.tables'
{
if @SqlStmnt <> '' @SqlStmnt = @SqlStmnt + ' UNION '
@sqlStmnt = @sqlStmnt + ' SELECT Max(updated_at_date) AS MAXDATE FROM ' + TableName
}
**EXECUTE ('SELECT MAX(MAXDATE) FROM (' + @SqlStmt + ')')**