您可以使用變量做到這一點:
SELECT t2.ID, ColX, ColY, ColZ
FROM (SELECT ID, ColX, ColY, ColZ,
@row_number := @row_number + 1 AS rn
FROM mytable
CROSS JOIN (SELECT @row_number := 0) AS var
ORDER BY ID) AS t1
INNER JOIN (
SELECT ID, @rn := @rn + 1 AS rn
FROM mytable
CROSS JOIN (SELECT @rn := 0) AS var
ORDER BY ID DESC) AS t2
ON t1.rn = t2.rn
ORDER BY t2.ID
Demo here
如果你想UPDATE
那麼您可以在一個UPDATE
聲明中這樣使用上面的查詢:
UPDATE mytable AS t
INNER JOIN(
SELECT ID, ColX, ColY, ColZ,
@row_number := @row_number + 1 AS rn
FROM mytable
CROSS JOIN (SELECT @row_number := 0) AS var
ORDER BY ID) AS t1 ON t.ID = t1.ID
INNER JOIN (
SELECT ID, @rn := @rn + 1 AS rn
FROM mytable
CROSS JOIN (SELECT @rn := 0) AS var
ORDER BY ID DESC) AS t2 ON t1.rn = t2.rn
SET t.ID = t2.ID
Demo here
無論ID
列的值如何,以上都將工作。
你的ID列有空白嗎? – fthiella