小编典典

mysql没有返回正确的json

sql

我使用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)

但是它给出了语法错误


阅读 238

收藏
2021-03-08

共1个答案

小编典典

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

2021-03-08