Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So erhalten Sie jede n-te Zeile in MySQL

Manchmal müssen Sie möglicherweise jede n-te Zeile in MySQL abrufen oder jede n-te Zeile in Ihrer Tabelle zurückgeben. In diesem Artikel sehen wir uns an, wie man jede n-te Zeile in MySQL auswählt.


So erhalten Sie jede n-te Zeile in MySQL

Wir werden uns zwei Möglichkeiten ansehen, um jede N-te Zeile in einer Tabelle zu erhalten – wenn Sie eine ID-ähnliche Spalte mit fortlaufenden Nummern darin haben und wenn Sie keine haben.

Angenommen, Sie haben die folgende Tabelle Verkäufe (ID, Betrag) . Für unser erstes Beispiel enthält die ID-Spalte fortlaufende Zeilen-IDs – 1, 2, 3, …

mysql> create table sales(id int, amount int);
mysql> insert into sales(id,amount)
       values(1,100),
       (2,300),
       (3,250),
       (4,150),
       (5,200);

mysql> select * from sales;
+----+--------+
| id | amount |
+----+--------+
|  1 |    100 |
|  2 |    300 |
|  3 |    250 |
|  4 |    150 |
|  5 |    200 |
+----+--------+

Bonus-Lesung:So fügen Sie eine automatische Erhöhung in einer vorhandenen Tabelle hinzu

Hier ist die SQL-Abfrage, um jede n-te Zeile in MySQL auszuwählen.

mysql> select * from table_name where table_name.id mod n = 0;

In der obigen Abfrage wählen wir grundsätzlich jede Zeile aus, derenid mod n Der Wert wird mit Null ausgewertet. Wir erhalten also Zeilen mit den IDs n, 2n, 3n, … Ersetzen Sie table_name mit Ihrem Tabellennamen und n mit jeder n-ten Zeile, die Sie zurückgeben möchten.

Hier ist ein Beispiel, um jede zweite Zeile aus der Verkaufstabelle zurückzugeben.

mysql> select * from sales where sales.id mod 2 = 0;
+----+--------+
| id | amount |
+----+--------+
|  2 |    300 |
|  4 |    150 |
+----+--------+

Bonuslektüre:So finden Sie die n-te Zeile in MySQL

Wenn Ihre Tabelle keine ID-ähnliche Spalte mit gespeicherten fortlaufenden Nummern hat, dann ist hier die SQL-Abfrage, um jede n-te Zeile aus der Tabelle abzurufen.

Nehmen wir an, Sie haben die folgende Tabelle sales(order_date, amount) die keine id-ähnliche Spalte hat.

mysql> create table sales2(order_date date, amount int);

mysql> insert into sales2(order_date,amount)
       values('2020-10-01',100),
       ('2020-10-02',300),
       ('2020-10-03',250),
       ('2020-10-04',150),
       ('2020-10-05',200);

mysql> select * from sales2;
+------------+--------+
| order_date | amount |
+------------+--------+
| 2020-10-01 |    100 |
| 2020-10-02 |    300 |
| 2020-10-03 |    250 |
| 2020-10-04 |    150 |
| 2020-10-05 |    200 |
+------------+--------+

Bonuslektüre:Wie man eine MySQL-Datenbank auf einen anderen Server repliziert

Hier ist die SQL-Abfrage, um jede n-te Zeile in MySQL abzurufen.

SELECT * 
FROM ( 
    SELECT 
        @row := @row +1 AS rownum, [column name] 
    FROM ( 
        SELECT @row :=0) r, [table name] 
    ) ranked 
WHERE rownum % [n] = 0

Ersetzen Sie in der obigen Abfrage [n] durch die n-te Zeile, die Sie erhalten möchten, ersetzen Sie [Tabellenname] durch Ihren Tabellennamen und [Spaltenname] durch Ihren Spaltennamen.

In der obigen Abfrage verwenden wir verschachtelte Abfragen. In der inneren Abfrage wird die Zeilennummer für jede Zeile ausgewertet und zugewiesen und in einer temporären Variablen namens rownum gespeichert. Die äußere Abfrage wählt Zeilen mit dem Rownum-Mod-n-Wert Null aus.

Hier ist die SQL-Abfrage, um jede zweite Zeile in MySQL auszuwählen.

mysql> SELECT *
       FROM (
           SELECT
              @row := @row +1 AS rownum, amount
          FROM (
              SELECT @row :=0) r, sales2
          ) ranked
      WHERE rownum % 2 = 0;
+--------+--------+
| rownum | amount |
+--------+--------+
|      2 |    300 |
|      4 |    150 |
+--------+--------+

Hoffentlich hilft Ihnen dieser Artikel dabei, jede n-te Zeile in MySQL auszuwählen.

Ubiq macht es einfach, Daten zu visualisieren und sie in Echtzeit-Dashboards zu überwachen. Testen Sie Ubiq kostenlos.