Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Mở rộng JSON với các khóa không xác định thành các hàng với MySQL JSON_TABLE

Bạn có thể sử dụng enumarete bằng cách sử dụng ROW_NUMBER() chức năng cửa sổ trong khi xác định các giá trị chính thông qua việc sử dụng JSON_KEYS() và sau đó giải nén các khóa tương ứng bằng cách sử dụng JSON_EXTRACT() từ các mảng mà chúng tôi nhận được chẳng hạn như

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

hoặc sử dụng truy vấn sau vì đơn giản hơn

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

Bản trình diễn



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để thay đổi tên cơ sở dữ liệu bằng MySQL?

  2. Làm cách nào để Trả về 0 Từ db MySQL Khi Thuật ngữ trong Mệnh đề Where không có trong cơ sở dữ liệu?

  3. MySQL:Mệnh đề IN cho ngày GIỮA ngày bắt đầu và ngày kết thúc?

  4. Hàng đợi PHP + MySQL

  5. Xác định xem hai tên có gần nhau không