検索

ホームページ  >  に質問  >  本文

列に新しい一意の値を作成します

次の形式の (MYSQL) テーブルがあります。テーブルの名前が mytable:

であると仮定します。 ###名前### ###グループ### 123名前 1名前 2名前 3名前 4id は一意であり、自動的にインクリメントされます。
id
1 124
2 125
1 126
name

は一意の文字列、group は単なる整数です。 ここで、name4 をまだ存在しない新しい group

に割り当てたいと考えています。そのため、この中の

name4groupたとえば、1 または 2 は使用できません。 たとえば、結果は次のようになります:

id

###名前### ###グループ### 126名前 43groupgroup には、整数であること以外の制約はありません。
現在、 の降順で並べ替えて、最大値の 1 を手動で挿入しているだけですが、列に新しい一意の値を生成するより良い/より速い方法があるかどうか知りたいです。 。
私は MySQL Workbench を使用しているので、SQL コマンドだけでなく、使用可能な場合は Workbench 固有のオプションも使用できます。

不明な点がある場合は、喜んで説明させていただきます。

P粉210405394P粉210405394483日前865

全員に返信(1)返信します

  • P粉205475538

    P粉2054755382023-09-17 00:08:56

    MySQL 8.0 では、2 つのウィンドウ関数のヘルプを取得できます。

    • MAX、最大の「group」値を取得します
    • ROW_NUMBER は、テーブル内に存在する各 NULL の増分値を取得します。

    次に、これら 2 つの値を合計し、「Group」フィールドを空にしてテーブルを更新します。

    リーリー

    デモは こちら をご覧ください。


    MySQL 5.X では、変数を使用し、最大の "group" 値で初期化し、UPDATE ステートメントで増分更新できます。 >SET 句。

    リーリー

    デモは こちら をご覧ください。

    返事
    0
  • キャンセル返事