MySQL UNION ALL ORDER BY Column not In SELECT

时间:2021-02-03 00:24:05

标签: mysql sql sql-order-by union-all

我正在尝试完成查询,但最后遇到了 ORDER BY 问题。这是一个例子:

SELECT 
  fieldA, fieldB
FROM
  tableA
WHERE [conditionA]

UNION ALL

SELECT
  fieldA, fieldB
FROM tableA
WHERE [conditionB]

ORDER BY fieldA, fieldC

fieldC 不包含在 SELECT 中,但存在于我使用的表中。通常,在标准 SELECT 中,这可以轻松完成。

1 个答案:

答案 0 :(得分:4)

ORDER BY 在概念上之后是 UNION ALL。它只能引用 SELECT ed 的列。因此,使用子查询执行此操作:

SELECT fieldA, fieldB
FROM ((SELECT fieldA, fieldB, fieldC
       FROM tableA
       WHERE [conditionA]
      ) UNION ALL
      (SELECT fieldA, fieldB, fieldC
       FROM tableA
       WHERE [conditionB]
     )
    ) a
ORDER BY fieldA, fieldC;

鉴于逻辑是针对同一个表的,这很可能也能满足您的需求:

SELECT fieldA, fieldB
FROM tableA
WHERE [conditionA] OR 
      [conditionB]
ORDER BY fieldA, fieldC;