You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在多选项中为特定$key分配值?MySQL表生成键值对需求

MySQL生成自定义键值对查询方案

没问题,我来帮你搞定这两个MySQL查询需求!下面针对你的场景分两种情况给出具体的SQL语句和说明:

1. 查询所有列并生成标准键值对

如果要把每条记录的所有字段直接转换成$key=>$value的键值对结构,MySQL的JSON_OBJECT()函数是最直接的选择,它可以把指定的字段名作为键,字段值作为值,组合成JSON格式的键值对(你可以直接在应用层解析这个JSON来得到对应的数据结构)。

假设你的表名为group_info,对应的查询语句如下:

SELECT 
  JSON_OBJECT(
    'ID', ID,
    'group_cat', group_cat,
    'group_sec', group_sec,
    'group_name', group_name,
    'enabled', enabled,
    'sent', sent
  ) AS key_value_pairs
FROM group_info;

执行后你会得到类似这样的结果(每条记录对应一个JSON对象):

{"ID": 1, "group_cat": "C", "group_sec": "sct_a", "group_name": "Project_A", "enabled": 1, "sent": "no"}

2. 自定义特定键的取值(多选项选择分配)

如果需要根据特定条件为某个键分配自定义的值(比如把enabled的0/1转换成文字、根据group_cat设置新的分类键等),可以结合CASE或IF语句在JSON_OBJECT()里动态生成值。

比如下面的例子:

  • 把enabled字段的1转为"Yes",0转为"No"
  • 根据group_cat的值,新增一个group_type键:C对应"Customer",P对应"Partner",其他情况为"Unknown"
  • 保留其他字段的原有键值关系

对应的SQL语句:

SELECT 
  JSON_OBJECT(
    'ID', ID,
    'group_cat', group_cat,
    'group_type', CASE 
                    WHEN group_cat = 'C' THEN 'Customer'
                    WHEN group_cat = 'P' THEN 'Partner'
                    ELSE 'Unknown'
                  END,
    'group_name', group_name,
    'enabled', IF(enabled = 1, 'Yes', 'No'),
    'sent', sent
  ) AS custom_key_value_pairs
FROM group_info;

执行后,第5条记录(ID=5)的结果会是:

{"ID": 5, "group_cat": "P", "group_type": "Partner", "group_name": "PMP", "enabled": "No", "sent": "no"}

如果你需要更灵活的键值映射(比如只选择部分字段、动态增减键),只需要调整JSON_OBJECT()里的键值对即可,比如去掉不需要的字段,或者新增更多基于条件的自定义键。

内容的提问来源于stack exchange,提问作者Tormy Van Cool

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:06:18