I have a table with a "SortID" column that is n开发者_如何学Goumbered using consecutive numbers. Whenever a row is deleted, it leaves a gap. Is there a way using pure SQL to update the rows with their row number? Something like this:
UPDATE tbl SET SortID={rowindex} ORDER BY SortID
(I realize this isn't valid SQL, that's why I'm asking for help)
This should set the first row to #1, the second row to #2... etc. Is this possible using SQL? Please forgive the poorly worded question, I'm not really sure the best way to ask this. :)
MySQL variables can be used for this.
SET @a:=0;
UPDATE tbl SET sortId=@a:=@a+1 ORDER BY sortId;
You can use mysql user defined variables
SET @pos=0;
SELECT @pos:=@pos+1, * FROM tbl ORDER BY SortID;
Are you sure you need it? Presentation layer is used for numbering most of time.
精彩评论