Ibland kan du behöva generera sekvens i MySQL. Eftersom MySQL inte har en inbyggd funktion för att skapa sekvens, behöver du generera den via SQL-fråga. Så här skapar du en sekvens i MySQL med hjälp av MySQL-sekvensfrågan.
Hur man skapar en sekvens i MySQL
Här är stegen för att skapa sekvens i MySQL. Det finns olika sätt att generera sekvens i MySQL.
Skapa sekvens med AUTO_INCREMENT
Du kan helt enkelt lagra din MySQL-sekvens i en kolumn med AUTO_INCREMENT-attributet under tabellskapandet. Låt oss säga att du vill skapa tabell order(id, order_date, summa) och lagra sekvensen i id kolumn.
mysql> create table orders(id int AUTO_INCREMENT PRIMARY KEY, order_date date, amount int); mysql> insert into orders(order_date, amount) values('2020-08-01', 250), ('2020-08-02',125), ('2020-08-03',300); mysql> select * from orders; +----+------------+--------+ | id | order_date | amount | +----+------------+--------+ | 1 | 2020-08-01 | 250 | | 2 | 2020-08-02 | 125 | | 3 | 2020-08-03 | 300 | +----+------------+--------+
I tabellen ovan definierar vi id kolumn som vår primärnyckel och inkluderar AUTO_INCREMENT-alternativet för att automatiskt öka och lagra primärnyckelvärden i den.
Observera att MySQL tillåter dig att bara ha en AUTO_INCREMENT kolumn per tabell och det också som primärnyckel.
I INSERT-frågan ovan tillhandahåller vi endast värden för order_date och belopp kolumner men inte id kolumn men MySQL genererar automatiskt en sekvens för den.
Bonus Läs:Hur man jämför två tabeller i MySQL
Skapa sekvens utan att använda AUTO_INCREMENT
Låt oss säga att du vill skapa en annan sekvenskolumn utan att använda AUTO_INCREMENT. I så fall måste du använda UPDATE-satsen för att matematiskt beräkna och fylla i denna sekvenskolumn.
Låt oss till exempel lägga till en sekvens kolumn till ovanstående tabell för att lagra en ny sekvens.
mysql> alter table orders add column sequence int;
Bonus Läs:Hur man kopierar tabell i MySQL
Därefter använder vi UPDATE-satsen för att skapa sekvens i MySQL. Vi kommer att skapa en sekvens som är två gånger id kolumnvärde
mysql> update orders set sequence=2*id; mysql> select * from orders; +----+------------+--------+----------+ | id | order_date | amount | sequence | +----+------------+--------+----------+ | 1 | 2020-08-01 | 250 | 2 | | 2 | 2020-08-02 | 125 | 4 | | 3 | 2020-08-03 | 300 | 6 | +----+------------+--------+----------+
Bonus Läs:Hur man får senaste månadsdata i MySQL
Vi kan också skapa en icke-linjär sekvens genom att uppdatera formeln som används i UPDATE-satsen. Här är SQL-frågan för att generera en sekvens av kvadratvärden (y x y) av id kolumn
mysql> update orders set sequence=id*id; mysql> select * from orders; +----+------------+--------+----------+ | id | order_date | amount | sequence | +----+------------+--------+----------+ | 1 | 2020-08-01 | 250 | 1 | | 2 | 2020-08-02 | 125 | 4 | | 3 | 2020-08-03 | 300 | 9 | +----+------------+--------+----------+
Ubiq gör det enkelt att visualisera data på några minuter och övervaka i realtidsinstrumentpaneler. Prova det idag!