mysql consulta los datos de un campo específico en todo el json

Recientemente descubierta la poderosa función de mysql, puede consultar directamente los datos de un valor específico en todo el json:
El contenido del campo correspondiente a json es así:
El contenido correspondiente a msg_content es el campo json:

{
    
    
    "fileName":"测非编1.mp4",
    "filePath":"/mnt/windows/folderscan/uploadAndTask/91/测非编1.mp4",
    "taskName":"截取首帧失败",
    "taskFailStage":"1"
}

Los datos originales son así:
Inserte la descripción de la imagen aquí

 SELECT
	id,
	msg_code AS msgCode,
	read_flag AS readFlag,
	msg_content ->> '$.mediaId' as mediaId,
	msg_content ->> '$.fileName' as fileName,
	msg_content ->> '$.taskName' as taskName,
	msg_content ->> '$.filePath' as filePath
FROM
	notice_msg
WHERE
	receive_user_id = '79'

El resultado después de dividir la consulta es este:
Inserte la descripción de la imagen aquí
cuando el campo es una matriz json:

[
    {
    
    
        "time": 1594034025178,
        "stage": 1,
        "detail": [
            {
    
    
                "stage": 1,
                "stepName": "视频信息获取",
                "createTime": 1594034024803,
                "stepStatus": 1
            },
            {
    
    
                "stage": 1,
                "stepName": "首帧截取",
                "createTime": 1594034025141,
                "stepStatus": 1
            },
            {
    
    
                "stage": 1,
                "stepName": "预处理",
                "createTime": 1594034025178,
                "stepStatus": 1
            }],
        "status": 1
    },
    {
    
    
        "time": 1594034025202,
        "stage": 2,
        "detail": [
            {
    
    
                "stage": 2,
                "stepName": "基础数据入库",
                "createTime": 1594034025202,
                "stepStatus": 1
            }],
        "status": 1
    },
    {
    
    
        "time": 1594034650094,
        "stage": 3,
        "detail": [
            {
    
    
                "stage": 3,
                "explain": "引擎识别人脸为空",
                "stepName": "本地引擎人脸检测",
                "createTime": 1594034616695,
                "stepStatus": 1
            },
            {
    
    
                "stage": 3,
                "explain": "识别结果81条",
                "stepName": "本地引擎音频检测",
                "createTime": 1594034616765,
                "stepStatus": 1
            },
            {
    
    
                "stage": 3,
                "explain": "识别结果46个",
                "stepName": "本地引擎场景检测",
                "createTime": 1594034616838,
                "stepStatus": 1
            },
            {
    
    
                "stage": 3,
                "explain": "拆条结果297条",
                "stepName": "智能拆条",
                "createTime": 1594034650094,
                "stepStatus": 1
            },
            {
    
    
                "stage": 3,
                "explain": "标签结果6条",
                "stepName": "智能标签",
                "createTime": 1594034622152,
                "stepStatus": 1
            }],
        "status": 1
    }]

Obtenga los valores de todas las etapas en todas las matrices de detalles:

select media_id as mediaId, task_content->'$[*].detail[*].stepStatus' as statusList from hisi_task_process
where media_id = '8a0cb043-98cd-4e60-b633-8309715bcea6'

Inserte la descripción de la imagen aquí
[*] Puedes completar el índice de la matriz y puedes ubicar el primer valor en la matriz.

Supongo que te gusta

Origin blog.csdn.net/qq_32115447/article/details/106625188
Recomendado
Clasificación