最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql的jsonTable使用及說明

 更新時間:2026年01月04日 15:36:22   作者:jpq+  
MySQL 8.0引入JSON_TABLE函數,用于將JSON數據轉換為關系表,便于查詢,JSON_TABLE支持嵌套路徑,解決復雜JSON嵌套數據轉換問題,根據SQL標準,MySQL將帶有表函數的連接視為使用LATERAL,8.0.14及以上版本LATERAL關鍵字隱式

JSON_TABLE 是 MySQL 8.0 中一個新的 JSON 函數。它也是一個表函數,返回值不是標量值而是結果集。

JSON_TABLE 將 JSON 文檔(部分或全部)轉換為關系表,以便您可以像使用普通表一樣使用它。

JSON_TABLE 函數從一個指定的 JSON 文檔中提取數據并返回一個具有指定列的關系表??梢韵衿胀ǖ谋硪粯邮褂?JSON_TABLE () 返回的表。

json-table官方文檔地址:

https://dev.mysql.com/doc/refman/8.0/en/json-table-functions.html#function_json-table

以下是jsontable的語法

JSON_TABLE(
    expr,
    path COLUMNS (column_list)
)   [AS] alias

column_list:
    column[, column][, ...]

column:
    name FOR ORDINALITY
    |  name type PATH string path [on_empty] [on_error]
    |  name type EXISTS PATH string path
    |  NESTED [PATH] path COLUMNS (column_list)

on_empty:
    {NULL | DEFAULT json_string | ERROR} ON EMPTY

on_error:
    {NULL | DEFAULT json_string | ERROR} ON ERROR

使用示例

假設我們有一個表包含ID和名稱:

CREATE TABLE t1
(
    id       varchar(32),
    name JSON
);

添加如下數據:

INSERT INTO t1
VALUES (uuid_short(), json_array('John'));
INSERT INTO t1
VALUES (uuid_short(), json_array('toma','Smith'));
INSERT INTO t1
VALUES (uuid_short(), json_array('aa','bb','cc','tt'));

現在,我們想要從 t1 表中查詢所有名稱和id,進行查詢(在 MySQL 中,JSON_TABLE 函數的 JSON 路徑表達式可以使用 $ 符號來指定。

$[*] 表示提取 JSON 文檔中的所有屬性):

SELECT value,id
from t1
        ,
     JSON_TABLE(name, '$[*]' COLUMNS (
         value VARCHAR(255) PATH '$'
         )) AS jt

數據將如下:

NESTED PATH 嵌套路徑

NESTED PATH為其所屬的子句中的每個匹配項生成一組記錄??梢越鉀Q復雜的json嵌套數據轉為行。

添加一條數據:

INSERT INTO t1
VALUES ('1', json_array(json_object('a',1,'b',json_array(11,111)),
    json_object('a',2, 'b',json_array(22,222)),
    json_object('a',3)));

使用 NESTED PATH:

SELECT jt.*
FROM t1,
     JSON_TABLE(
             name,
             '$[*]' COLUMNS (
                 a INT PATH '$.a',
                 NESTED PATH '$.b[*]' COLUMNS (b INT PATH '$')
                 )
         ) AS jt
WHERE id = '1';

我們發(fā)現每次jsontable后依然會對應所在的ID,比如:

上面需求的a,b列的ID就是1而不是其他ID。這其實是遵從了sql標準。

橫向派生表

根據SQL標準,MySQL總是將帶有表函數(如JSON_TABLE())的連接視為使用LATERAL無論MySQL發(fā)布版本如何,都是如此,這就是為什么即使在8.0.14之前的MySQL版本中也可以加入此函數的原因。

在MySQL 8.0.14及更高版本中,LATERAL 關鍵字是隱式的,不允許在 JSON_TABLE() 之前使用。這也是根據SQL標準。

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Mysql中的CHECK約束特性詳解

    Mysql中的CHECK約束特性詳解

    這篇文章主要介紹了Mysql中的CHECK約束特性詳解的相關資料,講解的十分淺顯易懂,這里推薦給大家,需要的朋友可以參考下
    2022-08-08
  • 淺談sql數據庫去重

    淺談sql數據庫去重

    關于sql去重,我簡單談一下自己的理解和經驗,如果各位有建議或有不明白的歡迎多多指出。
    2014-08-08
  • Mysqlslap MySQL壓力測試工具 簡單教程

    Mysqlslap MySQL壓力測試工具 簡單教程

    Mysqlslap是從5.1.4版開始的一個MySQL官方提供的壓力測試工具。通過模擬多個并發(fā)客戶端訪問MySQL來執(zhí)行壓力測試,同時詳細的提供了“高負荷攻擊MySQL”的數據性能報告。并且能很好的對比多個存儲引擎在相同環(huán)境下的并發(fā)壓力性能差別
    2011-10-10
  • 如何配置全世界最小的 MySQL 服務器

    如何配置全世界最小的 MySQL 服務器

    Intel Edison 是一個小巧的計算機基于 22 nm 的 Silvermont 雙核 Intel Atom CPU 主頻 500MHz運行 Linux (叫做 Yocto 的基于 Ubuntu 的發(fā)布版)。為了對 Edison 進行編程,我們需要一塊接口板??梢赃x擇的板子包括兼容Arduino的接口板 (包含了 SD 卡) 還有 Intel 接口板。
    2016-04-04
  • mysql 5.7.13 安裝配置方法圖文教程(win10)

    mysql 5.7.13 安裝配置方法圖文教程(win10)

    這篇文章主要為大家分享了mysql 5.7.13 安裝配置方法圖文教程,感興趣的朋友可以參考一下
    2016-06-06
  • mysql 8.0 找不到my.ini配置文件以及報sql_mode=only_full_group_by解決方案

    mysql 8.0 找不到my.ini配置文件以及報sql_mode=only_full_group

    MySQL5.7.5及以上版本啟用ONLY_FULL_GROUP_BYSQL模式可能導致的問題,本文就來介紹一下找不到my.ini配置文件的解決方法,感興趣的可以了解一下
    2024-08-08
  • mysql數據庫忘記管理員密碼的解決方法

    mysql數據庫忘記管理員密碼的解決方法

    我們在Windows操作系統(tǒng)下編程會使用到MySQL數據庫。但是有時,我們會忘記數據庫的登錄密碼?當我們忘記了登錄密碼,無法進入mysql時,該怎么辦呢?這里我們提供mysql的登錄秘密的修改
    2018-02-02
  • mysql數據庫中1045錯誤的解決方法

    mysql數據庫中1045錯誤的解決方法

    這篇文章主要為大家詳細介紹了MySQL數據庫中1045錯誤的解決方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • mysql命令導出表結構和數據的操作方法

    mysql命令導出表結構和數據的操作方法

    在日常使用中,我們經常需要對數據庫進行備份和復制,因此必須了解如何導出表結構和表數據,以下是使用MySQL命令導出表結構和表數據的方法,感興趣的朋友一起看看吧
    2023-11-11
  • MySQL數據庫減少磁盤I/O的深入拆解

    MySQL數據庫減少磁盤I/O的深入拆解

    為了減少磁盤I/O操作,MySQL使用了一些技術來提高性能,這篇文章主要介紹了MySQL數據庫減少磁盤I/O的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2026-04-04

最新評論

乌鲁木齐县| 伽师县| 称多县| 贺兰县| 蕲春县| 峨眉山市| 冕宁县| 奉化市| 安阳市| 湖北省| 馆陶县| 和平区| 大港区| 乐至县| 四会市| 福海县| 赤水市| 梧州市| 商河县| 普陀区| 贵溪市| 临桂县| 湖南省| 肥乡县| 西充县| 赤壁市| 莒南县| 汝阳县| 兴安县| 将乐县| 林西县| 大兴区| 道真| 广宁县| 宁远县| 东宁县| 镇康县| 山东省| 外汇| 乌兰浩特市| 汉中市|