MySQL имеет функцию сортировки, которая позволяет выбирать порядок значений ORDER BY FIELD().
ClickHouse не имеет этой функции.
У меня похожая просьба.:
SELECT name FROM table WHERE id IN(5,3,7,8,11,14,54)
Мне нужно, чтобы результат возвращался в порядке, указанном внутри IN(). Нигде не могу найти информацию о том, как это сделать.


Вы можете попробовать использовать ключевое слово indexOf.
SELECT name
FROM table
WHERE id IN (5, 3, 7, 8, 11, 14, 54)
ORDER BY indexOf([5, 3, 7, 8, 11, 14, 54], id);
Это дает вам результат в порядке, указанном в предложении IN().
вы можете попробовать indexOf() вместо arrayJoin(). Изменить ответ
Попробуй это:
WITH [5, 3, 7, 8, 11, 14, 54] AS o
SELECT name
FROM VALUES
(
'name UInt32'
, 3, 5, 7, 8, 11, 14, 54, 3, 5 --, ...
)
ORDER BY indexOf(o, name)
Результат:
|name|
|----|
|5 |
|5 |
|3 |
|3 |
|7 |
|8 |
|11 |
|14 |
|54 |
Спасибо, но это не работает должным образом. arrayJoin не принимает более одного аргумента.