Mysql 行集合不能按特定列排序

Mysql 行集合不能按特定列排序,mysql,sorting,union,mariadb,Mysql,Sorting,Union,Mariadb,我在MySQL MariaDB 10.20.1上有一个场景,其中结果行集不能按特定列排序 下面是这个查询的简化示例 SELECT * FROM ( SELECT * FROM Invoice WHERE /SOME_COMPLEX_CONDITION IS TRUE/ UNION ALL SELECT * FROM Invoice WHERE /ANOTHER_COMPLEX_CONDITION IS TRUE/ ) D12 ORDER BY D12

我在MySQL MariaDB 10.20.1上有一个场景,其中结果行集不能按特定列排序

下面是这个查询的简化示例

SELECT * 
FROM (
  SELECT *
    FROM Invoice
    WHERE /SOME_COMPLEX_CONDITION IS TRUE/
  UNION ALL
  SELECT *
    FROM Invoice
    WHERE /ANOTHER_COMPLEX_CONDITION IS TRUE/
) D12 ORDER BY D12.Amount ASC;
结果集按字典顺序排序,而不是按升序或降序排序。发票列的类型为十进制(X,Y),代码中没有类型转换


我想知道我应该从哪里开始这方面的研究

不需要进行外部查询,只需将每个查询用括号括起来[()],并在最后一个查询的括号外添加一个order by。我本来打算使用自连接,但你的建议做得更好,谢谢你的“MariaDB 10.20.1”--嗯?没有这样的版本。无法在10.0.21中复制,使用内部查询的十进制(10,2)字段对外部查询排序对我来说很好。。。