2013-05-25 65 views
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我使用的順序號爲自動遞增自動生成的序列號在SQL

+0

答:是的,有人可以寫這個查詢。 – sashkello

+0

更改數據中的數字聽起來像一個壞主意。查詢表格時,您可以指定一個連續的數字。 –

+0

你可以在這裏寫查詢 –

回答

4

你可以寫在大多數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; 
+0

感謝您的答案,但我怎麼可以添加數據在s.no行中的SQL –

1

FOR MySQL用戶 根據您的理由不希望使用用戶定義的變量如想避免的inializing 2個查詢,一個又一個使用它,你可以使用如下:

SELECT @a:[email protected]+1 serial_number, 
     marks 
FROM student_marks, 
     (SELECT @a:= 0) AS a; 
0
select @a:=0; 
SELECT @a:[email protected]+1 serial_number, 
    marks 
FROM  student_marks, 

它適合我希望我也會爲你效勞。