Heim  >  Fragen und Antworten  >  Hauptteil

Generieren eindeutiger 13-stelliger Zahlen: Methoden und Techniken in MySQL

Hallo zusammen, ich habe den ganzen Tag versucht, eindeutige 13 Nummern für vorhandene Produkte in meiner Datenbank zu generieren. Jedes Produkt muss einen EAN13-Barcode haben. Ich habe viele Beispiele im Internet ausprobiert, aber keines davon hat mir gute Ergebnisse gebracht. Hat jemand eine Lösung für dieses Problem?

Ich habe es versucht, aber nichts hat funktioniert

select cast(  (@n := (13*@n + 100) % 899999999981)+1e12 as char(15)) as num
from   (select @n := floor(rand() * 10e14) ) init,
       (select 1 union select 2) m01,
       (select 1 union select 2) m02,
       (select 1 union select 2) m03,
       (select 1 union select 2) m04,
       (select 1 union select 2) m05,
       (select 1 union select 2) m06,
       (select 1 union select 2) m07,
       (select 1 union select 2) m08,
       (select 1 union select 2) m09,
       (select 1 union select 2) m10,
       (select 1 union select 2) m11,
       (select 1 union select 2) m12,
       (select 1 union select 2) m13,
       (select 1 union select 2) m14,
       (select 1 union select 2) m15,
       (select 1 union select 2) m16,
       (select 1 union select 2) m17,
       (select 1 union select 2) m18,
       (select 1 union select 2) m19,
       (select 1 union select 2) m20,
       (select 1 union select 2) m21,
       (select 1 union select 2) m22
limit 5;

Wie kann ich jetzt alle 12000 Zeilen in einer vorhandenen Tabelle mit dem obigen Code aktualisieren? Ich versuche UPDATE, erhalte jedoch eine Fehlermeldung, wenn ich versuche, UPDATE und CAST zu mischen

Die Produkttabellenstruktur ist:

productid INT(11)
productName Varchar(225)
barcode INT(13)

P粉135799949P粉135799949409 Tage vor486

Antworte allen(1)Ich werde antworten

  • P粉739886290

    P粉7398862902023-09-08 09:59:56

    更新条形码。创建一个新表,然后将值插入到新表中,然后使用新表更新现有表使用的更新。

    创建表查询:-

    CREATE TABLE unique_numbers (
      id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
      barcode VARCHAR(13) NOT NULL,
      UNIQUE KEY barcode (barcode)
    );

    要插入的值:-

    INSERT INTO unique_numbers (barcode) 
    SELECT CAST(  (@n := (13*@n + 100) % 899999999981)+1e12 as char(15)) as num
    FROM 
      (SELECT @n := floor(rand() * 10e14) ) init,
      (SELECT 1 UNION SELECT 2) m01,
      (SELECT 1 UNION SELECT 2) m02,
      (SELECT 1 UNION SELECT 2) m03,
      (SELECT 1 UNION SELECT 2) m04,
      (SELECT 1 UNION SELECT 2) m05,
      (SELECT 1 UNION SELECT 2) m06,
      (SELECT 1 UNION SELECT 2) m07,
      (SELECT 1 UNION SELECT 2) m08,
      (SELECT 1 UNION SELECT 2) m09,
      (SELECT 1 UNION SELECT 2) m10,
      (SELECT 1 UNION SELECT 2) m11,
      (SELECT 1 UNION SELECT 2) m12,
      (SELECT 1 UNION SELECT 2) m13,
      (SELECT 1 UNION SELECT 2) m14,
      (SELECT 1 UNION SELECT 2) m15,
      (SELECT 1 UNION SELECT 2) m16,
      (SELECT 1 UNION SELECT 2) m17,
      (SELECT 1 UNION SELECT 2) m18,
      (SELECT 1 UNION SELECT 2) m19,
      (SELECT 1 UNION SELECT 2) m20,
      (SELECT 1 UNION SELECT 2) m21,
      (SELECT 1 UNION SELECT 2) m22
    LIMIT 12000;

    更新查询:-

    UPDATE product a
    JOIN unique_numbers b ON a.productid = b.id
    SET a.barcode = b.barcode;

    Antwort
    0
  • StornierenAntwort