MySQL テーブルの列を更新して、1、2、3 などから始まるランダムなシーケンス番号を設定しようとしています。たとえば、合計 38 行あるので、1 ~ 38 の番号で更新する必要があります (複製できません)。私は使ってみました:
UPDATE TABLE SET VALUE=FLOOR(RAND()*38)+1
しかし、重複した番号が表示されます。すべての行に異なる番号が必要です。
まさにあなたが望むものではないかもしれませんが、1 から始まる一意の ID をテーブルに割り当てることを検討している場合、アーキテクチャ的に良い解決策は、「id」列を自動インクリメントの一意の番号にすることです。
ALTER TABLE TABLE_NAME ADD COLUMN_NAME INT PRIMARY KEY AUTO_INCREMENT;
列が既にある場合は、以前に削除できます。
ALTER TABLE TABLE_NAME DROP COLUMN_NAME
単なるサンプルコード:
  for($i=1;$i<=38;$i++)
  {
     $arr[$i] = $i;
  }
  shuffle($arr);
  foreach($arr as $randarray)
  {
     //Your SQL query here UPDATE TABLE SET VALUE=$randarray like that
  }
MySQL でのみソリューションが必要な場合は、次のようなものが必要です。
update test set id =  (select MAX(id)+1 from test)  WHERE <your_condition>
しかし、エラーが発生します:
You can't specify target table 'test' for update in FROM clause
したがって、このエラーを回避するには、次のようなことを行う必要があります。
    update test set 
    id =  ( 
     select maxPlus1 from 
      (
       select MAX(id)+1 as maxPlus1 
       from test
      ) 
      maxTable
     ) WHERE <your_condition>