2016-09-06 14 views
0

私はこのような列のテーブルを持っています: id (int auto inc primary), title (varchar), batch (int) バッチあたり3つの項目を持つ特性です。MySQLはバッチごとに番号を変更します

  • 1、5
  • 2、B、5
  • 3、C、5
  • 4:この場合には、バッチはここ

    サンプルデータシーケンスでありません、D、7

  • 5、E、7
  • 6、F 7
  • 7、G、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

うわー私は道があるとは信じられません。参考までに大変ありがとうございます。あなたが提供するユーザー定義の変数を学びます。 –

関連する問題