Sortere random udtræk
Jeg har en tabel med navne og der vil jeg lave et tilfældigt udtræk, som dog skal sorteres alfabetisk. Hvordan gøres det nemmest?Tabellen ser sådan her ud:
mysql> describe navne;
+--------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+----------------+
| id | int(11) | | PRI | NULL | auto_increment |
| name | varchar(255) | | MUL | | |
| gender | tinyint(1) | | | 0 | |
+--------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
Her er to eksempler på udtræk der gerne skulle sorteres efter feltet name
mysql> SELECT * FROM navne WHERE LENGTH(name) >= 3 AND LENGTH(name) <= 4 AND gender = 1 ORDER BY RAND() LIMIT 10;
+-------+------+--------+
| id | name | gender |
+-------+------+--------+
| 6104 | Elli | 1 |
| 5224 | Bet | 1 |
| 8634 | Mey | 1 |
| 7876 | Lidy | 1 |
| 7196 | Jela | 1 |
| 10834 | Yuki | 1 |
| 10781 | Xin | 1 |
| 6002 | Edua | 1 |
| 5996 | Edle | 1 |
| 10950 | Zoe | 1 |
+-------+------+--------+
10 rows in set (0.15 sec)
mysql> SELECT * FROM navne WHERE LENGTH(name) >= 3 AND LENGTH(name) <= 4 AND gender = 0 ORDER BY RAND() LIMIT 10;
+------+------+--------+
| id | name | gender |
+------+------+--------+
| 3409 | Ronn | 0 |
| 2428 | Lewi | 0 |
| 3373 | Roar | 0 |
| 368 | Ayad | 0 |
| 3154 | Phuc | 0 |
| 549 | Boie | 0 |
| 2010 | Joe | 0 |
| 1903 | Jari | 0 |
| 994 | Eide | 0 |
| 853 | Dex | 0 |
+------+------+--------+
10 rows in set (0.14 sec)
At sortere det i PHP vil være en temmeligt besværlig opgave i forhold til Aa der gerne skal sorteres som Å, hvilket MySQL gør uden problemer.