By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
SELECT @@version
@@version |
---|
8.0.36 |
CREATE TABLE `tab` ( `jsdata` VARCHAR(1000) )
INSERT INTO `tab` VALUES
('{"x": 1, "y": 2, "z": 3}'),
('{"e": 4, "k": 5}')
Records: 2 Duplicates: 0 Warnings: 0
WITH k AS
(
SELECT *,
ROW_NUMBER() OVER(PARTITION BY `jsdata` ORDER BY value DESC) AS rn,
JSON_KEYS(`jsdata`) AS jk
FROM `tab` AS t
JOIN JSON_TABLE(
`jsdata`,
'$.*' COLUMNS (value INT PATH '$')
) j
)
SELECT JSON_UNQUOTE(JSON_EXTRACT(jk, CONCAT('$[',rn-1,']'))) AS "key", value
FROM k
key | value |
---|---|
e | 5 |
k | 4 |
x | 3 |
y | 2 |
z | 1 |
SELECT JSON_UNQUOTE(
JSON_EXTRACT(JSON_KEYS(`jsdata`),
CONCAT('$[',
ROW_NUMBER() OVER(PARTITION BY `jsdata` ORDER BY value DESC)-1,
']'))) AS "key", value
FROM `tab` AS t
JOIN JSON_TABLE(
`jsdata`,
'$.*' COLUMNS (value INT PATH '$')
) j
key | value |
---|---|
65 | 5 |
6b | 4 |
78 | 3 |
79 | 2 |
7a | 1 |