2
table orders
+----+--------+------------+
|s.no|   id   |  ordername |
+----+--------+------------+
|  1 |   34   |    name    |      
+----+--------+------------+
|  2 |   35   |    name    |        
+----+--------+------------+
|  3 |   36   |    name    |        
+----+--------+------------+
|  4 |   37   |    name    |        
+----+--------+------------+
|  5 |   38   |    name    |       
+----+--------+------------+

自動生成シリアル番号のクエリを作成し、SQLから注文を削除すると、シリアル番号はserial_number行で1234567になるはずで、注文IDを自動インクリメントとして使用しました

4

3 に答える 3

5

SQL のほとんどの方言でクエリを次のように記述できます。

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

SQL Server で機能する構文は次のとおりです。

with toupdate as (
      select row_number() over (order by id) as newval,
             o.*
      from orders o
     )
update toupdate set [s.no] = newval;
于 2013-05-25T14:56:39.693 に答える
1

MYSQL ユーザーの場合ユーザー定義変数を使用したくない理由に基づいて、2 つのクエリ (1 つは初期化用、もう 1 つはそれを使用するため) を回避したいという理由に基づいて、次のように使用できます。

SELECT  @a:=@a+1 serial_number, 
        marks 
FROM    student_marks,
        (SELECT @a:= 0) AS a;
于 2014-11-26T07:34:01.167 に答える