0

値のグループをインクリメントするために使用される次の関数があります。

SET @IncrementValue := 0;
SET @VIN := 0;

UPDATE tbInventoryMedia
SET 
  @IncrementValue := IF(@VIN <> strVIN, @IncrementValue + 1, 1),
  @VIN := strVIN, 
  tbInventoryMedia.intOrder = @IncrementValue;

これは非常に単純なクエリのように見えます...最後のvinが異なる場合はインクリメントされ、番号付けが再開されます。SET の後にコンパイル エラーが表示される理由はありますか?

どんな助けでも大歓迎です。

4

1 に答える 1

0

SETの一部であるセッション変数を更新することはできませんUPDATE

これを試して:

SET @IncrementValue := 0;
SET @VIN := 0;

UPDATE  tbInventoryMedia
SET     tbInventoryMedia.intOrder = CASE @vin WHEN @vin := strVin THEN @IncrementValue := @IncrementValue + 1 ELSE @IncrementValue := 1 END
ORDER BY
        strVIN;
于 2012-06-01T20:09:05.440 に答える