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

「パーティションベースのカウンタ書き換え」

mysql と php を phpmyadmin で使用します。パーティションベースのカウンターに大きな問題があり、それを改善したいのですが、私の SQL 知識ではそれができません。私はこのことにとても心を痛めています。

テーブルに重複データ用のカウンターを置きたいのですが、この値が重複値を取得した場合、値の後に数値が追加され、新しい値が見つかるまで 1 からやり直します。最終結果は次のようになります:

リーリー

このカウンターについては以前にも助けてもらったことがあるのですが、思ったように動作しませんでした。そして、phpmyadmin をリロードした後、フォームの挿入ボタンを押すと、フォームは次のようになります。 リーリー ###何が起きてる?書き換えの助けを求めているコードは次のとおりです:

リーリー

このコードを書き換えて、最初のテーブルの例のように、phpmyadmin で正常に動作する、番号付きの名前と重複を持つテーブルを作成できますか?ご協力をよろしくお願いいたします。私は問題のある中級 SQL ユーザーであることを覚えておいてください。

P粉618358260P粉618358260306日前485

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

  • P粉592085423

    P粉5920854232024-01-11 10:44:21

    Possible solution - BEFORE INSERT trigger and additional MyISAM table with secondary autoincrement:

    Working table

    Additional table

    Trigger

    Insert rows - the AI index is added to the name. Check the result.

    Look what is stored in additional table now.

    db<>fiddle here


    If your working table user exists already, and it contains some data, then you'd create additional table and fill it with data using, for example,

    CREATE TABLE user_index (id INT AUTO_INCREMENT,
                             name VARCHAR(127),
                             PRIMARY KEY (name, id)) ENGINE=MyISAM
    SELECT MAX(SUBSTRING_INDEX(name, '-', -1) + 0) id,
           SUBSTRING_INDEX(name, '-', 1) name
    FROM user
    GROUP BY 2;
    

    https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=38f028cfe1c9e85188ab0454463dcd78

    返事
    0
  • キャンセル返事