sql >> Database >  >> RDS >> Mysql

Hoe maak je een reeks in MySQL

Soms moet u mogelijk een reeks genereren in MySQL. Aangezien MySQL geen ingebouwde functie heeft voor het maken van een reeks, moet u deze genereren via een SQL-query. Hier leest u hoe u een reeks in MySQL kunt maken met behulp van een MySQL-reeksquery.

Hoe maak je een reeks in MySQL

Hier zijn de stappen om een ​​reeks in MySQL te maken. Er zijn verschillende manieren om sequenties te genereren in MySQL.

Creëer een reeks met AUTO_INCREMENT

U kunt uw MySQL-reeks eenvoudig in een kolom opslaan met het AUTO_INCREMENT-kenmerk tijdens het maken van tabellen. Stel dat u tabel orders(id, order_date, hoeveelheid) . wilt maken en sla de volgorde op in id kolom.

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 |
+----+------------+--------+

In de bovenstaande tabel definiëren we id kolom als onze primaire sleutel en neem de AUTO_INCREMENT-optie op om de primaire sleutelwaarden automatisch te verhogen en op te slaan.

Houd er rekening mee dat u met MySQL slechts één AUTO_INCREMENT-kolom per tabel kunt hebben en dat ook als primaire sleutel.

In de bovenstaande INSERT-query geven we alleen waarden voor order_date en bedrag kolommen maar niet id kolom, maar MySQL genereert er automatisch een reeks voor.

Bonus lezen:twee tabellen vergelijken in MySQL

Creëer een reeks zonder AUTO_INCREMENT te gebruiken

Stel dat u nog een reekskolom wilt maken zonder AUTO_INCREMENT te gebruiken. In dat geval moet u de UPDATE-instructie gebruiken om deze reekskolom wiskundig te berekenen en te vullen.

Laten we bijvoorbeeld een reeks . toevoegen kolom naar bovenstaande tabel om een ​​nieuwe reeks op te slaan.

mysql> alter table orders 
add column sequence int;

Bonus lezen:tabel kopiëren in MySQL

Vervolgens gebruiken we de UPDATE-instructie om een ​​reeks in MySQL te maken. We zullen een reeks maken die tweemaal id . is kolomwaarde

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 lezen:hoe u gegevens van de laatste maand in MySQL kunt krijgen

We kunnen ook een niet-lineaire reeks maken door de formule bij te werken die wordt gebruikt in de UPDATE-instructie. Hier is de SQL-query om een ​​reeks vierkante waarden (y x y) van id te genereren kolom

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 maakt het gemakkelijk om gegevens binnen enkele minuten te visualiseren en in realtime dashboards te controleren. Probeer het vandaag nog!

  1. MariaDB MaxScale Load Balancing op Docker:Beheer:deel twee

  2. SQL-filtercriteria in join-criteria of waar-clausule die efficiënter is

  3. Converteren van asynchrone naar synchrone replicatie in PostgreSQL

  4. Laravel:Opgegeven sleutel was te lang; maximale sleutellengte is 767 bytes