sql - tsql select语句中的自增子查询

标签 sql sql-server tsql sql-server-2000

我有一个 T-SQL select 语句,我想自动增加其中的一列(数据库中不存在)

select dbo.a, dbo.b, dbo.c, select @d:=1; @increment:=@increment+1 AS d

这可能吗?

最佳答案

假设您使用的是 SQL 2005 或更高版本:

SELECT dbo.a, dbo.b, dbo.c, ROW_NUMBER() OVER(ORDER BY GETDATE()) AS d

对从 DB 返回的行进行排序。如果你想指定一个订单,你可以这样做:
SELECT dbo.a, dbo.b, dbo.c, ROW_NUMBER() OVER(ORDER BY dbo.a) AS d

对于 SQL 2000 及更早版本,您需要一个唯一的值来排序:
SELECT dbo.a, dbo.b, dbo.c, (SELECT COUNT(*) FROM dbo d2 WHERE d2.a <= dbo.a) AS d
FROM dbo

或者如果您不需要单个 SELECT:
SELECT IDENTITY(int,1,1) ID, dbo.a, dbo.b, dbo.c
INTO #Temp
FROM dbo

SELECT * FROM #Temp

关于sql - tsql select语句中的自增子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8932412/

相关文章:

mysql - 是否可以在 SQL 查询中插入十六进制值?

php - 根据当前用户 session 显示特定内容 PHP

SQL Server 2008 连接两个查询

sql - 如何将整个 Excel 列分配给 Access 上 VBA 内的变量?

sql - 如何根据sql查询结果中的顺序枚举一组连续的行

sql-server - 初始化后SQL Server docker容器停止

sql - 为什么当 xact_abort 打开时,Sql Server 在 raiserror 之后继续执行?

sql-server - 如何简化下面的SQL查询?

sql-server - SSRS : Change SQL Statement Dynamically

sql - 使用临时表复制一行的开销值得吗?