MySQL :: Aufgabe #2

2 Lösungen Lösungen öffentlich

Abfrage in zufälliger Reihenfolge

Anfänger - MySQL von pocki - 26.11.2014 um 12:44 Uhr
Schreibe eine Abfrage, welche die Daten in einer zufälligen Reihenfolge zurückgibt.
Die zurückgegebenen Daten sollen zufällig vertauscht werden.

Lösungen:

1x
vote_ok
von Marcinek (70 Punkte) - 19.12.2014 um 00:07 Uhr
Der Trick bei der Lösung dieser Aufgabe besteht dabei nach einer zufallszahl zu sortieren. Hierfür kann in MySQL die Funktion "rand()" verwendet werden.

Beispiel:
Quellcode ausblenden SQL-Code
select * from table order by rand() desc
vote_ok
von Exception (4240 Punkte) - 26.04.2019 um 13:13 Uhr
Die Tabelle
Quellcode ausblenden SQL-Code
DESCRIBE erpel.blub;

Konsolenausgabe:


MariaDB [erpel]> describe blub;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| value0 | varchar(45) | NO | | NULL | |
| value1 | varchar(45) | NO | | NULL | |
| value2 | varchar(45) | NO | | NULL | |
| value3 | varchar(45) | NO | | NULL | |
| value4 | varchar(45) | NO | | NULL | |
+--------+-------------+------+-----+---------+-------+
6 rows in set (0.01 sec)


Zufällige Ausgabe der Datensätze:
Quellcode ausblenden SQL-Code
SELECT * FROM erpel.blub ORDER BY RAND();

Zu beachten ist hierbei der Teil "ORDER BY RAND()", welcher für die zufällige Rückgabe der Datensätze sorgt.

Resultate nach mehrfacher Ausführung:

Konsolenausgabe:


MariaDB [erpel]> SELECT * FROM erpel.blub ORDER BY RAND();
+----+--------+--------+--------+--------+--------+
| id | value0 | value1 | value2 | value3 | value4 |
+----+--------+--------+--------+--------+--------+
| 2 | aa | bb | cc | dd | ee |
| 1 | a | b | c | d | e |
| 3 | aaa | bbb | ccc | ddd | eee |
+----+--------+--------+--------+--------+--------+
3 rows in set (0.00 sec)

Konsolenausgabe:


MariaDB [erpel]> SELECT * FROM erpel.blub ORDER BY RAND();
+----+--------+--------+--------+--------+--------+
| id | value0 | value1 | value2 | value3 | value4 |
+----+--------+--------+--------+--------+--------+
| 3 | aaa | bbb | ccc | ddd | eee |
| 1 | a | b | c | d | e |
| 2 | aa | bb | cc | dd | ee |
+----+--------+--------+--------+--------+--------+
3 rows in set (0.00 sec)

Konsolenausgabe:


MariaDB [erpel]> SELECT * FROM erpel.blub ORDER BY RAND();
+----+--------+--------+--------+--------+--------+
| id | value0 | value1 | value2 | value3 | value4 |
+----+--------+--------+--------+--------+--------+
| 1 | a | b | c | d | e |
| 3 | aaa | bbb | ccc | ddd | eee |
| 2 | aa | bb | cc | dd | ee |
+----+--------+--------+--------+--------+--------+
3 rows in set (0.00 sec)