在 ASC 和 DESC 中按多种情况对 SQL 查询进行排序

问题描述 投票:0回答:0

我在本地数据库的 SQL 中遇到此存储过程的问题。这个过程会通知所有员工的列表,根据用户输入的数字参数 (Orden) 按他们的 ID (legajo) 或名称 (nombre_empleado) 排序。 我试图按 id 或名称按降序排列列表(当 Orden = 2 或 4 时),但我不知道该怎么做。我正在使用 phpmyadmin

BEGIN
SELECT * FROM empleado AS e
      INNER JOIN funcion AS f ON f.id_funcion = e.id_funcion
      INNER JOIN turno AS t ON t.id_turno = e.id_turno
      INNER JOIN convenio AS c ON c.id_convenio = e.id_convenio
ORDER BY
    (CASE
     WHEN Orden = 1 THEN legajo
     WHEN Orden = 3 THEN nombre_empleado
     WHEN Orden = 2 THEN legajo
     WHEN Orden = 4 THEN nombre_empleado
     END);
END

我试过: - 在两者中添加 DESC

WHEN Orden = 2 THEN legajo DESC
WHEN Orden = 4 THEN nombre_empleado DESC

-制作两个独立的案例

  CASE
     WHEN Orden = 1 THEN legajo
     WHEN Orden = 3 THEN nombre_empleado
     END ASC,
  CASE
     WHEN Orden = 2 THEN legajo
     WHEN Orden = 4 THEN nombre_empleado
     END DESC

-添加ELSEIF

无用,因为我收到 SQL 语法错误。有办法解决吗?我究竟做错了什么?谢谢!

mysql phpmyadmin
© www.soinside.com 2019 - 2024. All rights reserved.