#mysql #sql
#mysql #sql
Вопрос:
Существуют ли какие-либо базы данных, которые имеют четко определенное поведение при сортировке по столбцу массива? Например, с помощью mysql:
WITH sort (letter, number) AS (
select 'a', 1 union select 'a', 2 union
select 'b', 4 union select 'b', 5
) SELECT letter, json_arrayagg(number) ids from sort group by letter order by ids -- [ASC|DESC doesn't matter]
# letter, ids
a, [1, 2]
b, [4, 5]
Имеют ли другие базы данных четко определенную сортировку для типа массива или как это обычно работает? Я надеялся, что один из них поддерживал сортировку массива «как если бы» он был приведен к строке (без необходимости делать это вручную).
Комментарии:
1. Сортировка по массиву не имеет смысла. четко определенное поведение при сортировке по столбцу массива? это неверно определено. dbfiddle.uk /…
2. @Akina может быть, не по умолчанию… Я полагаю, имеет смысл, если кто-то специально преобразует его в строку и хочет просмотреть
['a','b']
раньше['c','h']
, нет?3. Столбец массива JSON (кажется) сортируется только по 1-му элементу (т. Е.
ORDER BY json_array_column
РавенORDER BY json_array_column.[0]
). Да, вы можете использоватьCAST(ids AS CHAR)
— но вы получите простой CSV, в котором числа преобразуются в строки (разной длины!), У вас будет обычная проблема «сортировать числа как строки».4. @Akina ах, я понимаю — хорошая мысль, спасибо!
5. @samuelbrody1249 . , , MySQL не поддерживает массивы. Вы ссылаетесь на значение JSON. И JSON на самом деле не имеет понятия о том, что вы хотите. Могут быть способы преобразовать его в строку.