【问题标题】:SQL query to JSON_OBJECT and DISTINCT对 JSON_OBJECT 和 DISTINCT 的 SQL 查询
【发布时间】:2020-01-06 17:21:14
【问题描述】:

我正在尝试使用 JSON_ARRAYAGG(JSON_OBJECT()) 将查询结果作为 JSON 对象输出(效果很好)。我不能在 JSON_OBJECT 命令中使用 DISTINCT 并且使用 GROUP BY 不会将整个结果输出为一个 JSON,而是输出尽可能多的行(然后是一个 JSON)。示例:

SELECT JSON_ARRAYAGG(JSON_OBJECT(\'id\', `id`, ...)) FROM table

效果很好,但不会过滤掉重复项。我试过了:

SELECT JSON_ARRAYAGG(JSON_OBJECT(\'id\', `id`, \'title\', DISTINCT(`title`), ...)) FROM table

还有:

SELECT JSON_ARRAYAGG(JSON_OBJECT(\'id\', `id`, \'title\', `title`, ...)) FROM table GROUP BY `title`

但前者是错误的(语法方面),后者将结果拆分为多行。有人可以解释我如何实现这一目标吗?喜欢:

SELECT JSON_ARRAYAGG(JSON_OBJECT(\'id\', `id`, ...)) FROM table

但只有独特的结果。

【问题讨论】:

  • MYSQL 最后我做了一个普通但更复杂的sql查询,并用服务器语言而不是直接使用SQL进行JSON转换。

标签: mysql sql json


【解决方案1】:

您能否将重复的查询包装为子查询并与之区分开来?

select distinct xyz from ( SELECT JSON_ARRAYAGG(JSON_OBJECT(\'id\',id, ...)) as xyz FROM table) table1 );

【讨论】:

  • 我对此表示怀疑,因为内部查询返回的是 JSON 而不是行表示,但我会试一试。
猜你喜欢
  • 2013-03-08
  • 1970-01-01
  • 2012-10-24
  • 2020-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多