Estoy enfrentando un problema en el procedimiento de almacenamiento de mysql. Principalmente me enfrento a un problema de CASO Eso cambia el resultado. Pero quiero el resultado de la elección según la llamada, como si quiero el orden de la tabla según la identificación, el nombre o la clase. Así que implemento CASE Expression. Pero no encuentra el resultado correctamente
procedimiento de almacenamiento a continuación
CREATE PROCEDURE StudentTablePagination ( IN Class NVARCHAR(50) , IN Name NVARCHAR(50), IN StartRecord INT, IN PageSize INT, IN SortColumn NVARCHAR(20), IN SortOrder NVARCHAR(4) ) BEGIN IF SortOrder = 'ASC' Then SELECT id from lakes where name like CONCAT('%',Name,'%') AND class like CONCAT('%',Class,'%') ORDER BY ( CASE SortColumn WHEN 'name' THEN lakes.name WHEN 'state' THEN lakes.state ELSE id END ) Asc LIMIT StartRecord, PageSize; ELSEIF SortOrder = 'DESC' Then SELECT id from lakes where name like CONCAT('%',Name,'%') AND class like CONCAT('%',Class,'%') ORDER BY ( CASE SortColumn WHEN 'name' THEN lakes.name WHEN 'state' THEN lakes.state ELSE id END ) DESC LIMIT StartRecord , PageSize; END IF; ENDLlamar:
CALL StudentTablePagination('','', 0,10,'id','asc')y resultado:
id 10 100 1000Pero el resultado requiere:
id 1 2 3