sql >> Databáze >  >> RDS >> Mysql

Rozšiřte JSON s neznámými klíči na řádky pomocí MySQL JSON_TABLE

Enumarete můžete použít pomocí ROW_NUMBER() funkce okna při určování hodnot klíčů pomocí JSON_KEYS() a poté extrahujte příslušné klíče pomocí JSON_EXTRACT() z polí, která jsme získali jako

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

nebo použijte následující dotaz jako jednodušší

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

Ukázka



  1. Uložené procedury MySQL nefungují s SELECT (základní otázka)

  2. Problém s instalací Ruby on Rails (Windows)

  3. Jak získat ID z databáze po kliknutí na položku listview v Androidu

  4. mysql počet řádků za hodinu