首页 > 解决方案 > 返回行 ID 和 2 个字段,其中 2 个字段是唯一的

问题描述

我正在寻找一种有效的方法来检索idMySQL 查询中每个相关的唯一项目。该目标在下面的示例表和所需输出中进行了解释(显示为json)。到目前为止,我的进度也在下面。

桌子

+----+------+------+
| id | var1 | var2 |
+----+------+------+
| 1  | a    | b    |
+----+------+------+
| 2  | a    | c    |
+----+------+------+
| 3  | c    | b    |
+----+------+------+
| 4  | a    | c    |
+----+------+------+
| 5  | a    | b    |
+----+------+------+

期望的输出

{
    var1: a,
    var2: b,
    ids: 1,5
},
{
    var1: a,
    var2: c,
    ids: 2,4
}

到目前为止,我有这个查询,它准确地返回匹配 var1 和 var2 唯一的行:

`SELECT base_currency,quote_currency FROM pf_items GROUP BY base_currency,quote_currency`

我遇到的问题还包括将关联id字段作为数组来实现接近上述所需输出的结果。

我已经搜索了这个问题的答案,但是如果没有上述可视化,很难准确描述我想要通过结果实现的目标。

标签: mysql

解决方案


要扩展 Revo 的答案,如果您使用的是 MySQL 5.7 或更高版本,则可以使用JSON_OBJECT以下功能直接以预期的 JSON 格式输出数据:

SELECT JSON_OBJECT( 'var1',var1, 'var2',var2 ,'ids', GROUP_CONCAT(id)) AS JSON 
FROM pf_items 
GROUP BY var1, var2

退货

     {"ids": "1,5", "var1": "a", "var2": "b"}    
     {"ids": "2,4", "var1": "a", "var2": "c"}     
     {"ids": "3", "var1": "c", "var2": "b"} 

现场观看:http ://rextester.com/live/BZDD55420


推荐阅读