Il s'agit d'un problème lié à la conception de votre base de données. Le numéro de sujet doit être stocké sous la forme d'un nombre entier. Si vous ne pouvez pas modifier le design, essayez plutôt cette requête :
SELECT title
FROM table1
ORDER BY CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(title, ' ', 2), ' ', -1)
AS UNSIGNED);
Résultat :
'topic 1 foo' 'topic 2 bar' 'topic 10 baz'
Données de test :
DROP TABLE IF EXISTS table1;
CREATE TABLE table1 (title VARCHAR(100) NOT NULL);
INSERT INTO table1 (title) VALUES
('topic 1 foo'),
('topic 2 bar'),
('topic 10 baz');