按超出范围的序号列排序
Order by ordinal column number that is out of range
可以按结果集中的列序号对 MySQL 结果进行排序,如下所示:
select id, firstname, lastname from customer order by 3,2
(按 lastname
排序,然后 firstname
)
但是,如果您指定了一个不存在的列编号,例如我的示例中的 4,则会出现错误:Unknown column '4' in 'order clause'
我有一些遗留的用户界面代码,其中从各种查询返回的列数事先并不知道。由于这段代码的结构,要添加一个排序工具,它会帮助我能够指定一个不存在的列号而不会出错。 (如果数字超出实际列范围,排序顺序无关紧要。)
有没有办法在 SQL 级别以某种方式做到这一点?也许是这样的:
order by min(3, number_of_columns_in_result_set)
不,这不可能。但是您可以将其包装在准备好的语句中并处理该子结果集(谢谢FaNo_FN)。
可以按结果集中的列序号对 MySQL 结果进行排序,如下所示:
select id, firstname, lastname from customer order by 3,2
(按 lastname
排序,然后 firstname
)
但是,如果您指定了一个不存在的列编号,例如我的示例中的 4,则会出现错误:Unknown column '4' in 'order clause'
我有一些遗留的用户界面代码,其中从各种查询返回的列数事先并不知道。由于这段代码的结构,要添加一个排序工具,它会帮助我能够指定一个不存在的列号而不会出错。 (如果数字超出实际列范围,排序顺序无关紧要。)
有没有办法在 SQL 级别以某种方式做到这一点?也许是这样的:
order by min(3, number_of_columns_in_result_set)
不,这不可能。但是您可以将其包装在准备好的语句中并处理该子结果集(谢谢FaNo_FN)。