ORDER BY WITH FILL 空结果

ORDER BY WITH FILL on an empty result

如果结果为空,

ORDER BY WITH FILL 不起作用:

SELECT val
FROM table
WHERE 1 != 1
ORDER BY val WITH FILL FROM 1 TO 5
Ok.
0 rows in set. Elapsed: 0.173 sec.

很可能是因为 ORDER BY 没有参与这里的执行。

有没有办法解决问题,或者唯一的解决方法是像 一样使用 UNION

您可以将两者混合使用。 Union all with a default value you can filter at the end and the FILL clause:

SELECT * FROM (
  SELECT *
  FROM
  (
    SELECT 0 AS number
    UNION ALL
    SELECT number
    FROM numbers(10)
    WHERE 1 != 1
  )
  ORDER BY number ASC WITH FILL FROM 1 TO 5
)
WHERE number != 0

┌─number─┐
│      1 │
│      2 │
│      3 │
│      4 │
└────────┘