Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Perluas JSON dengan kunci yang tidak diketahui ke baris dengan MySQL JSON_TABLE

Anda dapat menggunakan enumarete dengan menggunakan ROW_NUMBER() fungsi jendela sambil menentukan nilai kunci melalui penggunaan JSON_KEYS() , lalu ekstrak kunci masing-masing dengan menggunakan JSON_EXTRACT() dari array yang kami dapatkan seperti

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

atau gunakan kueri berikut agar lebih mudah

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

Demo



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysqli_affected_rows untuk UPDATE terkadang mengembalikan 0 pada kecocokan baris penuh

  2. Nama pengenal utama (atau kunci) migrasi Laravel terlalu panjang

  3. Bagaimana cara mengimpor data XBRL ke MySQL?

  4. Menyiapkan kunci asing di phpMyAdmin?

  5. Kesalahan Sintaks SQL 1064