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!