返回行id和两个字段,其中两个字段是唯一的

q0qdq0h2  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(423)

我正在寻找一个有效的方法来检索每个相关的独特的项目 id 在mysql查询中。下面用一个示例表和所需的输出(如下所示)来解释这个目标 json ). 我到目前为止的进展也如下。
table

+----+------+------+
| 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 字段作为一个数组来实现接近上面所期望的输出。
我一直在寻找这个问题的答案,但是如果没有上面的想象,准确地描述我试图用结果来实现的目标是很困难的。

91zkwejq

91zkwejq1#

为了扩展revo的回答,如果您使用的是mysql 5.7或更高版本,您可以直接以预期的json格式输出数据,使用 JSON_OBJECT 功能:

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

g6ll5ycj

g6ll5ycj2#

有一个逗号分隔的列表 id 除了使用 group by ,您应该根据 group_concat :

SELECT GROUP_CONCAT(id) as ids, var1, var2 FROM pf_items GROUP BY var1, var2;

相关问题