返回行ID和2个字段,其中2个字段是唯一的

时间:2018-06-22 11:59:42

标签: mysql

我正在寻找一种有效的方法来检索MySQL查询中具有每个相关#menu-button { width:100px; height:50px; background:red; } #bkg { top:10px; left:10px; width:100px; height:100px; background-color:#00ff00; transition: 10s forwards; } #bkg.scalenew { -webkit-transform: scale(1.5) } 的唯一项。以下示例表和所需的输出(显示为id)说明了目标。到目前为止,我的进度也在下面。

表格

json

所需的输出

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

到目前为止,我有此查询,该查询可准确返回匹配var1和var2唯一的行:

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

我遇到的问题还包括将相关的`SELECT base_currency,quote_currency FROM pf_items GROUP BY base_currency,quote_currency` 字段作为数组包含在内,以实现接近于上述所需输出的效果。

我一直在寻找这个问题的答案,但是如果没有上述可视化效果,很难准确地描述我想要达到的结果。

2 个答案:

答案 0 :(得分:1)

要使用id并以逗号分隔所有group by的列表,您应基于group_concat进行选择:

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

答案 1 :(得分:1)

要扩展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