首页 > 解决方案 > ORDER BY WITH FILL 空结果

问题描述

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这里描述的那样使用?

标签: clickhouse

解决方案


您可以将两者混合使用。使用默认值联合所有,您可以在末尾和FILL子句中过滤:

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 │
└────────┘

推荐阅读