sql >> Base de Datos >  >> RDS >> Mysql

Orden numérico al devolver resultados de MySQL

Este es un problema con el diseño de su base de datos. El número de tema debe almacenarse como un número entero. Si no puede cambiar el diseño, intente esta consulta en su lugar:

SELECT title
FROM table1
ORDER BY CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(title, ' ', 2), ' ', -1)
              AS UNSIGNED);

Resultado:

'topic 1 foo'
'topic 2 bar'
'topic 10 baz'

Datos de prueba:

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');