sql - 数据库中每个表的最大值(ID)

我正在尝试为我拥有的每个表获取最大值 MAX(ID),其中包含我的数据库中的 ID “Table_Example” 和一个特定的 schema_name。

一个例子:

SELECT MAX(ID) FROM Schema_name.Table_name1

这会检索位于 Table_name1 上的最大 ID 值,但我有 84 个表。我想只在一列中知道每个表的最大值。 这是我目前正在处理的代码: 我正在使用 information_schema.columns 自动获取表的名称和每个表所属的架构,以便在一列中获取整个数据库 ID max(id)。

USE TABLE_EXAMPLE
GO
DECLARE @ID NVARCHAR(MAX) --int

SET @ID = (SELECT DISTINCT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA = 'SCHEMA_NAME' AND COLUMN_NAME IN ('ID') AND DATA_TYPE = 'INT')

SELECT @ID FROM (SELECT ('SCHEMA_NAME'+'.'+TABLE_NAME) AS TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA = 'SCHEMA_NAME' AND COLUMN_NAME = 'ID' AND DATA_TYPE='INT') AS W

此脚本检索了错误的数据,但我认为我对获取这些值有点封闭,但我不确定我做错了什么。 有人可以给我任何好的方法吗?或者有更好的选择来完成它吗?

最佳答案

如果您想要标识列中的最大值,而不管这些列的名称如何,那么这是一种非常简单的方法。这将为您提供表名、标识列的名称以及该列的最大值:

SELECT sys.tables.name AS [Table Name], 
    sys.identity_columns.name AS [Column Name],
    last_value AS [Last Value]      
FROM sys.identity_columns
    INNER JOIN sys.tables
        ON sys.identity_columns.object_id = sys.tables.object_id
ORDER BY last_value DESC

https://stackoverflow.com/questions/38614246/

相关文章:

c# - 如何在装饰器中定义事件和属性

scala - 为什么 For Comprehension 生成器会抑制 Option 类型?

php - 上传文件在php中不起作用

php - 如何过滤此 PHP 数组对象中的唯一对象

java - 在不同计算机之间同步 IntelliJ 项目

r - R中二维核密度估计的混淆

oracle - 更新分区键,不允许行移动

cakephp - 如何从cakephp 3中的url访问参数

php - 如何在 laravel 中返​​回一个响应对象 json

php - PHP 中的 fatal error 是什么意思?