在sql中自动生成序列号

在sql中自动生成序列号,sql,serial-number,Sql,Serial Number,为自动生成序列号编写查询,当我从sql中删除订单时,序列号行中的序列号应为1234567,并且我使用订单id作为自动增量您可以用sql的大多数方言编写查询,如下所示: table orders +----+--------+------------+ |s.no| id | ordername | +----+--------+------------+ | 1 | 34 | name | +----+--------+------------+ |

为自动生成序列号编写查询,当我从sql中删除订单时,序列号行中的序列号应为1234567,并且我使用订单id作为自动增量

您可以用sql的大多数方言编写查询,如下所示:

table orders
+----+--------+------------+
|s.no|   id   |  ordername |
+----+--------+------------+
|  1 |   34   |    name    |      
+----+--------+------------+
|  2 |   35   |    name    |        
+----+--------+------------+
|  3 |   36   |    name    |        
+----+--------+------------+
|  4 |   37   |    name    |        
+----+--------+------------+
|  5 |   38   |    name    |       
+----+--------+------------+
以下是在SQL Server中使用的语法:

select row_number() over (order by id) as "s.no",
       id, ordername
from orders o

您可以用大多数sql方言编写查询,如下所示:

table orders
+----+--------+------------+
|s.no|   id   |  ordername |
+----+--------+------------+
|  1 |   34   |    name    |      
+----+--------+------------+
|  2 |   35   |    name    |        
+----+--------+------------+
|  3 |   36   |    name    |        
+----+--------+------------+
|  4 |   37   |    name    |        
+----+--------+------------+
|  5 |   38   |    name    |       
+----+--------+------------+
以下是在SQL Server中使用的语法:

select row_number() over (order by id) as "s.no",
       id, ordername
from orders o

适用于MYSQL用户 基于您不希望使用用户定义变量的原因,即希望避免有两个查询,一个用于初始化,另一个用于使用它,您可以使用以下方法:

with toupdate as (
      select row_number() over (order by id) as newval,
             o.*
      from orders o
     )
update toupdate set [s.no] = newval;

适用于MYSQL用户 基于您不希望使用用户定义变量的原因,即希望避免有两个查询,一个用于初始化,另一个用于使用它,您可以使用以下方法:

with toupdate as (
      select row_number() over (order by id) as newval,
             o.*
      from orders o
     )
update toupdate set [s.no] = newval;
它对我有用,希望我也能对你有用


它对我有用,希望我也能对你有用。

回答:是的,有人可以写这个查询。更改数据中的数字听起来不是个好主意。在查询表时,您可以只指定一个序列号。您可以在此处为此编写查询吗?在视图中处理此问题可能更好,因为您的序列号列将发生更改。研究一下如何使用行号——这是非常特定于数据库的。回答:是的,有人可以编写此查询。更改数据中的行号听起来不是个好主意。在查询表时,您可以只指定一个序列号。您可以在此处为此编写查询吗?在视图中处理此问题可能更好,因为您的序列号列将发生更改。为此,请考虑使用行号--这是非常特定于数据库的。谢谢您的回答,但我如何在s中添加数据。在sql中没有行谢谢您的回答,但我如何在s中添加数据。在sql中没有行