我对动态 sql 非常陌生,并且继承了一个我似乎无法弄清楚的项目。
排序在这个项目中从未正常工作,我试图在保持 sql 和存储过程动态的同时弄清楚它。
下面的这一行基本上就是问题所在。如果变量 inSortOrder 是 'first_name,则 sql 应首先按 first_name 排序,然后按姓氏排序。
问题是,我需要根据传递的另一个变量按 ASC 或 DESC 排序。
我不知道A做了什么,也无法在互联网上找到有关它的信息。我尝试添加另一个“DESC”或“ASC”,但它总是被忽略。
无论如何,它总是会返回上升。有谁知道如何解决这个问题,并且仍然按多个字段排序?A是做什么的?
if(inSortOrder='first_name',concat(A.first_name,'_A_',A.last_name),''),
编辑: 整个存储过程超过 100 行,但这里是有问题的查询。我知道它的其余部分有效。只是排序有问题。具体来说,试图弄清楚“ A ”的作用。(下划线之间的a)
假设变量 inOrder 作为“first_name”放入存储过程。基本上试图弄清楚如何根据另一个变量编辑最后一行,按 DESC 或 ASC 排序。
选择 A.first_name,
N.middle_name
N.last_name
FROM
student S left JOIN
names N on S.id = N.student_id
WHERE
N.record_status = 'FAILED'
ORDER BY if(inOrder='first_name',concat(N.first_name,' A ',N.last_name),''),