mysql - 返回行 ID 和 2 个字段,其中 2 个字段是唯一的
问题描述
我正在寻找一种有效的方法来检索id
MySQL 查询中每个相关的唯一项目。该目标在下面的示例表和所需输出中进行了解释(显示为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
字段作为数组来实现接近上述所需输出的结果。
我已经搜索了这个问题的答案,但是如果没有上述可视化,很难准确描述我想要通过结果实现的目标。
解决方案
要扩展 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"}
推荐阅读
- html - Netlify 部署无法识别持有我的图像的 AWS s3
- javascript - 用javascript中的图像替换文字输入
- yolov4 - 如何解决谷歌 colab 中 yolov4 的提前停止训练?如何在训练期间获得完整绘制的训练图表?
- typescript - 如何在 TypeScript 中实现发布订阅模式?
- java - ProcessBuilder 的输入流为空,具体取决于操作系统
- sql - SQL:每个程序的会话数
- html - 个性化的语音气泡
- c++ - 如何将`/lib`下的所有文件夹添加到Visual Studio 2019中的“其他库目录”
- javascript - 将构造函数推送到数组
- python - 为什么 datetime.strptime 将日期输出为序列化?