Sql 使用组_CONCAT问题的JSON视图

Sql 使用组_CONCAT问题的JSON视图,sql,mysql,json,group-by,Sql,Mysql,Json,Group By,嘿,DBA和所有聪明的家伙。我有个问题要问你 当数据以BLOB形式返回时,我们使用MySQL视图将数据格式化为JSON,这很方便,尽管性能不是特别好,但我们已经知道这一点 但是,我现在似乎无法让一个特定的查询工作,当它应该包含一个具有多个连接值的已创建JSON对象时,每一行都包含NULL 以下是总体思路: SELECT CONCAT( "{", "\"some_list\":[", GROUP_CONCAT( DISTINCT t1.id ), "],", "\"othe

嘿,DBA和所有聪明的家伙。我有个问题要问你

当数据以BLOB形式返回时,我们使用MySQL视图将数据格式化为JSON,这很方便,尽管性能不是特别好,但我们已经知道这一点

但是,我现在似乎无法让一个特定的查询工作,当它应该包含一个具有多个连接值的已创建JSON对象时,每一行都包含NULL

以下是总体思路:

SELECT CONCAT(
  "{",
     "\"some_list\":[", GROUP_CONCAT( DISTINCT t1.id ), "],",
     "\"other_list\":[", GROUP_CONCAT( DISTINCT t2.id ), "],",
  "}"
) cool_json

FROM table_name tn

INNER JOIN ( some_table st ) ON st.some_id = tn.id

LEFT JOIN ( another_table at, another_one ao, used_multiple_times t1  )
 ON st.id = at.some_id AND
    at.different_id = ao.different_id AND
    ao.different_id = t1.id

LEFT JOIN ( another_table2 at2, another_one2 ao2, used_multiple_times t2  )
 ON st.id = at2.some_id AND
    at2.different_id = ao2.different_id AND
    ao2.different_id = t2.id

GROUP BY tn.id ORDER BY tn.name
有人知道这里的问题吗?我是否遗漏了一些我应该分组的内容?当我只做了1个左连接和组连接时,它就工作了,但是现在有了多个连接/组连接,它就把事情搞砸了


当我从cool_json字段中移动GROUP_Concat时,它们会按预期工作,但我希望我的数据格式为json,这样我就可以一步从服务器端或客户端对其进行解码。

我已经测试了其中一些,但没有发现任何错误

尝试创建一个视图,如

CREATE VIEW tn_view AS
SELECT  tn.id, tn.name, t1.id, t2.id

FROM table_name tn

INNER JOIN ( some_table st ) ON st.some_id = tn.id

LEFT JOIN ( another_table at, another_one ao, used_multiple_times t1  )
 ON st.id = at.some_id AND
    at.different_id = ao.different_id AND
    ao.different_id = t1.id

LEFT JOIN ( another_table2 at2, another_one2 ao2, used_multiple_times t2  )
 ON st.id = at2.some_id AND
    at2.different_id = ao2.different_id AND
    ao2.different_id = t2.id
然后


您是否已尝试将此查询直接运行到数据库中。您是否在输出中收到有关组_concat的任何警告?group_concat可以轻松达到1024个字符的自然限制。这可以增加我已经设置了全局组concat\u max\u len=8192;这就足够了,但即使发生这种情况,它也会切断文本,我只会得到空值。不过,很好的猜测是,在搞乱我的JSONYES的可能副本之前,这就是问题所在,创建一个视图,然后获取该数据会起作用,但我想以内联方式完成这一切,因为我们已经有太多的视图。
SELECT CONCAT(
  "{",
     "\"some_list\":[", GROUP_CONCAT( DISTINCT t1.id ), "],",
     "\"other_list\":[", GROUP_CONCAT( DISTINCT t2.id ), "],",
  "}"
) cool_json
FROM tn_view
GROUP BY id ORDER BY name