Сортировка выбором порядка значений ClickHouse

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

Мне нужно, чтобы результат возвращался в порядке, указанном внутри IN(). Нигде не могу найти информацию о том, как это сделать.

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
2
0
121
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете попробовать использовать ключевое слово 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().

Спасибо, но это не работает должным образом. arrayJoin не принимает более одного аргумента.

Артём Пучков 11.03.2024 08:23

вы можете попробовать indexOf() вместо arrayJoin(). Изменить ответ

dincer.unal 11.03.2024 08:40

Попробуй это:

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  |

Другие вопросы по теме

Локальная база данных загружает изображения, но память бесконечно растет и переполняется - SwiftUI
Запрос нескольких произвольных тегов в базе данных SQLite в программе Python
Как получить предыдущую запись по дате в случае отсутствия совпадения в условии соединения
Android.database.sqlite.SQLiteException: такой таблицы нет: contact_details (код 1): , при компиляции: INSERT INTO contact_details(..) VALUES (?,??,?)
Как написать запрос на условие в таблице соединения
Ограничение данных на основе неявных отношений в Entity Framework Core
Настройка сервера MySQL для управления тысячами таблиц
Эффективная массовая вставка данных (250 тыс. записей) в Laravel без превышения ограничения времени PHP? (Очередь, многопользовательская аренда)
Есть ли способ обновлять два значения каждый раз, вычисляя данные в каждой строке?
Разрешения на создание представлений без разрешений на создание таблиц в POSTGRESQL