So hätte ich das Problem gelöst:
mysql> insert into benutzer(loginname, punkte) values ('BWA', '5');
Query OK, 1 row affected (0.00 sec)
mysql> insert into benutzer(loginname, punkte) values ('Berniwa', '2');
Query OK, 1 row affected (0.00 sec)
mysql> insert into benutzer(loginname, punkte) values ('BerniWA', '3');
Query OK, 1 row affected (0.00 sec)
mysql> insert into benutzer(loginname, punkte) values ('bWa', '10');
Query OK, 1 row affected (0.00 sec)
mysql> select loginname, punkte from benutzer where punkte is Not null order by punkte DESC;
+-----------+--------+
| loginname | punkte |
+-----------+--------+
| bWa | 10 |
| BWA | 5 |
| BerniWA | 3 |
| Berniwa | 2 |
+-----------+--------+
4 rows in set (0.00 sec)
mysql> show columns from benutzer;
+------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------+------+-----+---------+----------------+
| name | text | YES | | NULL | |
| vorname | text | YES | | NULL | |
| email | text | YES | | NULL | |
| loginname | text | YES | | NULL | |
| passwort | text | YES | | NULL | |
| benutzerID | int(11) | | PRI | NULL | auto_increment |
| punkte | int(11) | YES | | NULL | |
+------------+---------+------+-----+---------+----------------+
7 rows in set (0.00 sec)
Und so du
mysql> alter table benutzer change punkte punkte Varchar(30)
-> ;
Query OK, 4 rows affected (0.03 sec)
Records: 4 Duplicates: 0 Warnings: 0
mysql> Select * from benutzer;
+------+---------+-------+-----------+----------+------------+--------+
| name | vorname | email | loginname | passwort | benutzerID | punkte |
+------+---------+-------+-----------+----------+------------+--------+
| NULL | NULL | NULL | BWA | NULL | 1 | 5 |
| NULL | NULL | NULL | Berniwa | NULL | 2 | 2 |
| NULL | NULL | NULL | BerniWA | NULL | 3 | 3 |
| NULL | NULL | NULL | bWa | NULL | 4 | 10 |
+------+---------+-------+-----------+----------+------------+--------+
4 rows in set (0.00 sec)
mysql> select loginname, punkte from benutzer where punkte is Not null order by punkte DESC;
+-----------+--------+
| loginname | punkte |
+-----------+--------+
| BWA | 5 |
| BerniWA | 3 |
| Berniwa | 2 |
| bWa | 10 |
+-----------+--------+
4 rows in set (0.01 sec)
mysql> select loginname, punkte from benutzer where punkte is Not null order by punkte;
+-----------+--------+
| loginname | punkte |
+-----------+--------+
| bWa | 10 |
| Berniwa | 2 |
| BerniWA | 3 |
| BWA | 5 |
+-----------+--------+
4 rows in set (0.00 sec)
mysql> show columns from benutzer;
+------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+----------------+
| name | text | YES | | NULL | |
| vorname | text | YES | | NULL | |
| email | text | YES | | NULL | |
| loginname | text | YES | | NULL | |
| passwort | text | YES | | NULL | |
| benutzerID | int(11) | | PRI | NULL | auto_increment |
| punkte | varchar(30) | YES | | NULL | |
+------------+-------------+------+-----+---------+----------------+
7 rows in set (0.00 sec)
Dein Problem ist wie man glaub ich erkennen kann das du wahrscheinlich Varchar oder einen String verwendet hast, dass hat eine falsche sortierung zu Folge, änders ganz einfach in Int.
alter table benutzer change punkte punkte int;