当前位置: 首页 > 面试题库 >

mysql没有返回正确的json

充鑫鹏
2023-03-14
问题内容

我使用mysql 5.7

我想将联接表的结果串联到单列中。我使用JSON_OBJECT包裹在GROUP_CONCAT函数中的函数。这是查询

SELECT r.id, r.name,
GROUP_CONCAT(
    JSON_OBJECT(
       'id', i.id, 'name', i.name, 'metrics', i.metrics, 'amount', ir.amount,
                  'cat_id', i.cat_id, 'cat_name', ic.name
    )) AS ingredients
FROM recipes r, ingredient_recipe_meta ir, ingredients i, ingredient_category ic
WHERE r.id = ir.recipe_id
AND i.id = ir.ingredient_id
AND i.cat_id = ic.id
GROUP BY r.id
LIMIT 1

ingredients包含来自联接表的数据。数据已正确检索,但问题是ingredients列未转换为正确的JSON。
princsreen
如您所见,最后有点“切”。

我也尝试过JSON_ARRAY,但是现在它不能转换为正确的数组。它看起来像字符串太大,不适合列。有办法解决吗?

更新

问题必须出在不适合列的st大小中。我尝试从联接表中选择较少的列,并且它可以正常工作。也许有一种方法可以在选择时将我的json列“即时”转换为文本?我试图将列转换为文本

CAST(GROUP_CONCAT(...   AS TEXT)

但是它给出了语法错误


问题答案:

问题是由于GROUP_CONCAT函数的字符串长度有限,即1024,这要归功于@Paul
Spiegel在评论部分中提到了这一点。



 类似资料:
  • 意识到递归是我的弱点之一后,我找到了一个网站,迫使你递归地解决简单问题(https://codestepbystep.com/problem/view/cpp/recursion/digitsSorted?problemsetid=15) 我坚持的一个(digitalsSorted,数字5)如下:调用一个传递数字作为参数的函数。如果该数字中的数字按递增顺序排序,则函数返回True,否则返回Fals

  • 我有一个表格和一个表格。包含所有课程的列表,包含教授/协助该课程的志愿者列表。 我想写一个查询,返回没有任何志愿者分配给它的所有课程的列表。这就是正在发生的事情: 以下所有查询都返回 course_id 3 course_id 4 course_id 5 为什么course_id 1(正确)被遗漏,而course_id 3却不是??? 同样的问题,但没有一个解决方案对我有效: 左侧外部连接轨4

  • 问题内容: 我有一个我以前从未见过的问题,猫鼬的findByIdAndUpdate没有在回调中返回正确的模型。 这是代码: 数据库中的原始文档如下所示: 进入的updateObj如下所示: 从回调返回的模型与原始模型相同,而不是updatedObj。如果我查询数据库,它已正确更新。它只是没有从数据库中返回。 这感觉像是一个“愚蠢的用户”错误,但我看不到它。任何想法表示赞赏。 问题答案: 在Mong

  • 问题内容: 我正在尝试为表中的每个用户获取一个SUM(),但是MySQL返回错误的值。 这就是它的外观(http://sqlfiddle.com/#!2/7b988/4/0) 但这就是它的外观(http://sqlfiddle.com/#!2/7b988/2/0) 这是我要运行的查询: 我究竟做错了什么? 问题答案: 试试这个查询: SQLFiddle-> http://sqlfiddle.com

  • 我已经阅读了这篇文章,并确保将TEMP和TMP的系统变量和用户变量分别设置为C:\TEMP和C:\TMP。我已经重新启动了我的机器两次,但当我的应用程序调用系统时。getProperty(“java.io.tmpdir”)它一直指向C:\Program Files\Apache Software Foundation\Tomcat 8.5\temp。为什么要这样做?我如何才能让它指向C:\Temp

  • 给定一个类Foo 为什么我用Spock来嘲笑Foo 调用总是返回false? 不确定这是否有区别,但测试是在Groovy/Spock中进行的,而Foo是在Java8中进行的。