Mysql SQL连接到JSON

Mysql SQL连接到JSON,mysql,sql,json,Mysql,Sql,Json,我试图实现以下JSON结果(通过数据库中的行循环): [{ “标题”:“意大利面食和葡萄酒佩特拉利亚”, “图像url”:“图像”, “副标题”:“说明1”, “按钮”:[ { “类型”:“url”, “标题”:“更多详细信息”, “url”:”https://domain" } ] },{ “标题”:“意大利面”, “图像url”:“图像”, “副标题”:“说明2”, “按钮”:[ { “类型”:“url”, “标题”:“更多详细信息”, “url”:”https://domain" } ]

我试图实现以下JSON结果(通过数据库中的行循环):

[{
“标题”:“意大利面食和葡萄酒佩特拉利亚”,
“图像url”:“图像”,
“副标题”:“说明1”,
“按钮”:[
{
“类型”:“url”,
“标题”:“更多详细信息”,
“url”:”https://domain"
}
]
},{
“标题”:“意大利面”,
“图像url”:“图像”,
“副标题”:“说明2”,
“按钮”:[
{
“类型”:“url”,
“标题”:“更多详细信息”,
“url”:”https://domain"
}
]
}]
我希望直接在SQL查询中执行此操作。我写了这句话,但有些地方不对劲,我不知道哪里错了,我应该怎么做

https://domain“'))分隔符“},{'),“}]”)
)分隔符'},{'),'}]'),从'Places'开始
结果:

组函数的使用无效

我不确定这是实现我想要做的事情的最佳方式,所以任何其他想法都会受到赞赏

我使用MyISAM引擎的MySQL

更新

我注意到,当我不进行嵌套并只创建简单对象时,它工作得很好,并且执行正确

SELECT CONCAT('[{',GROUP_CONCAT(concat_ws(',',concat('"title":"',name,'"'),concat('"image_url":"',image,'"'),concat('"subtitle":"',info,'"')
) SEPARATOR '},{'),'}]')
所以实际上,第二个concat_组就是问题所在,或者说我正在讨论的地方,这段代码

CONCAT('"buttons":[{',GROUP_CONCAT(concat_ws(',',concat('"type":"url"'),concat('"caption":"More Details"'),concat('"url":"https://domain"')) SEPARATOR '},{'),'}]')
数据库架构

CREATE TABLE `Places` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(22) DEFAULT NULL,
  `info` varchar(197) DEFAULT NULL,
  `type` varchar(10) DEFAULT NULL,
  `subtype` varchar(15) DEFAULT NULL,
  `keywords` varchar(36) DEFAULT NULL,
  `image` varchar(140) DEFAULT NULL,
  `url` varchar(110) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
样本数据

INSERT INTO `Places` (`id`, `name`, `info`, `type`, `subtype`, `keywords`, `image`, `url`) VALUES
(1, 'Pasta E Vino Petraglia', 'description 1', 'Restaurant', 'Italian', 'pasta ', 'https://lostinplovdiv.com/timthumb.php?src=/media/images/aefb966533cc0bffe40b9d1e14ca0c4c7018de3891db83ccf721cf761df9359e.png&w=460&h=&zc=0', 'https://www.facebook.com/Pasta-E-Vino-Petraglia-194285454717186/'),
(2, 'La Pasta', 'description 2', 'Restaurant', 'Italian', 'pasta', 'https://lostinplovdiv.com/timthumb.php?src=/media/images/291359f1fa156815c2c9632033e23b8c9598885783faca803096e6bebc4c46c6.png&w=460&h=&zc=0', 'https://www.tripadvisor.com/Restaurant_Review-g295391-d11889447-Reviews-La_pasta-Plovdiv_Plovdiv_Province.html'),
(3, 'Brick House', 'BRICK HOUSE description 3', 'Restaurant', 'Burger', 'burger', 'https://lostinplovdiv.com/timthumb.php?src=/media/images/c732a45b8f3b2aec8dfb976f8c3609af7c29d16799ffc73998f09657ad9bb314.png&w=460&h=&zc=0', 'https://bg-bg.facebook.com/brickkhousee/posts');

我仍然不能确定你的最终目标

正如我在评论中已经提到的,您最好在应用程序端完成所有这些json转换

到目前为止,您似乎根本不需要
GROUP\u CONCAT

以下是您可以获得的最接近IMHO的方法:

但是请检查-上次查询-没有返回正确的包装json数组!
这就是我的意思,你可以用另一个select来播放和包装这个select,concat将这个select作为子查询。但整个方法的体系结构非常错误,您应该避免在sql端进行如此大的转换。

您得到了什么结果?如果显示得到的结果,帮助会更容易。请标记正在使用的db引擎,这与为每种技术指定字符串的方式不同可能只是更新缺少的info@MuhammadSaqlain,你提到的复制品和我的不一样我现在明白你的意思了。我想我应该试着把结果告诉你。谢谢你的帮助。
SELECT CONCAT('{\"title\":\"',name,'\", \"image_url\":\"',image,'\", \"subtitle\":\"',info,
              '\"buttons\":[{\"type\": \"url\",\"caption\": \"More Details\",\"url\": \"https://domain"}]\"}')
FROM Places;


SELECT GROUP_CONCAT('[',CONCAT('{\"title\":\"',name,'\", \"image_url\":\"',image,'\", \"subtitle\":\"',info,
              '\"buttons\":[{\"type\": \"url\",\"caption\": \"More Details\",\"url\": \"https://domain"}]\"}'),
                    ']')
FROM Places