2016-09-06 50 views
0

我有這樣的列表: id (int auto inc primary), title (varchar), batch (int) 哪些特徵每批有3個項目。但在這種情況下,批次不在序列MySQL每批更換號碼

在這裏,示例數據:

  • 1中,a,5
  • 2,B,5
  • 3,C,5
  • 4 ,d,7
  • 5,E,7
  • 6,F,7
  • 7克,10
  • 8,h,10

是否有任何查詢將這些批次更新爲自動增量? (批量訂購)所以批次5變爲1,批次7變爲2,批次10變爲3等。

TL; DR:我想更新每批次順序,而不是每行

感謝您的幫助。

回答

1

你可以這樣說:

UPDATE t 
JOIN (
SELECT 
t.*, 
@newbatch := IF (@rc % 3 = 0, @newbatch + 1, @newbatch) AS newbatch, 
@rc := @rc + 1 
FROM t 
, (SELECT @rc := 0, @newbatch := 0) var_init_subquery 
) sq ON t.id = sq.id 
SET t.batch = newbatch; 

帶電作業如果您有關於如何工作的問題,請仔細閱讀本manual entry about user defined variables第一。

+0

哇我不敢相信有一種方法..非常感謝您的參考先生,我會學習您提供的用戶定義變量。 –