mysql实现动态查询表字段方式(返回JSON格式)

 更新时间:2026年03月15日 10:48:12   作者:胡旺旺  
文章描述了在数据库中新增表字段后,如何处理和查询的步骤,首先新增表字段,然后更新配置表,最后重新执行查询,作者分享个人经验,希望对大家有所帮助

准备测试配置表

DROP TABLE IF EXISTS `field_config`;
CREATE TABLE `field_config`  (
  `text` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

INSERT INTO `field_config` VALUES ('area_id');
INSERT INTO `field_config` VALUES ('parent_id');
INSERT INTO `field_config` VALUES ('area_name');
INSERT INTO `field_config` VALUES ('area_type');

准备测试数据表

DROP TABLE IF EXISTS `ks_areas`;
CREATE TABLE `ks_areas`  (
  `area_id` smallint(6) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '地区id',
  `parent_id` smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT '地区父id',
  `area_name` varchar(120) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '地区名称',
  `area_type` tinyint(1) NOT NULL DEFAULT 2 COMMENT '地区类型 0:country,1:province,2:city,3:district',
  PRIMARY KEY (`area_id`) USING BTREE,
  INDEX `parent_id`(`parent_id`) USING BTREE,
  INDEX `area_type`(`area_type`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3429 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

INSERT INTO `ks_areas` VALUES (1, 0, '中国', 0);
INSERT INTO `ks_areas` VALUES (2, 1, '北京', 1);
INSERT INTO `ks_areas` VALUES (3, 1, '安徽', 1);
INSERT INTO `ks_areas` VALUES (4, 1, '福建', 1);
INSERT INTO `ks_areas` VALUES (5, 1, '甘肃', 1);
INSERT INTO `ks_areas` VALUES (6, 1, '广东', 1);
INSERT INTO `ks_areas` VALUES (7, 1, '广西', 1);

编写查询语句

SET @var = '1';
SET @var1 = (SELECT CONCAT('JSON_OBJECT\(',GROUP_CONCAT(CONCAT('\'',text,'\',',text)),'\)') from field_config);
SET @strsql = concat('SELECT ',@var1,' from ks_areas where area_id >', @var);
PREPARE stmt FROM @strsql;
EXECUTE stmt;

返回结果为:

新增表字段之后处理方式

第一步新增表字段

ALTER TABLE ks_areas ADD test varchar(20) COMMENT '测试字段';

第二步新增配置表字段

INSERT into field_config VALUE('test');

第三步 重新执行查询语句即可。

返回结果为:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MySQL的id关联和索引使用的实际优化案例

    MySQL的id关联和索引使用的实际优化案例

    这篇文章主要介绍了MySQL的id关联实际优化案例,关联和索引一直是MySQL常见的可优化大块儿,需要的朋友可以参考下
    2015-05-05
  • 关于MySQL死锁的产生原因、检测与解决方式

    关于MySQL死锁的产生原因、检测与解决方式

    这篇文章主要介绍了关于MySQL死锁的产生原因、检测与解决方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • 简述MySql四种事务隔离级别

    简述MySql四种事务隔离级别

    这篇文章主要介绍了MySql四种隔离级别,帮助大家更好的理解和学习MySQL,感兴趣的朋友可以了解下
    2020-08-08
  • MySQL Join算法原理与性能优化实战指南(最新推荐)

    MySQL Join算法原理与性能优化实战指南(最新推荐)

    本文解析MySQL Join算法原理与性能优化,涵盖嵌套循环、块嵌套循环和哈希连接,分析其优缺点及适用场景,提供索引优化、参数调整等实战策略,助力提升查询效率,感兴趣的朋友跟随小编一起看看吧
    2025-06-06
  • Mysql中文汉字转拼音的实现(每个汉字转换全拼)

    Mysql中文汉字转拼音的实现(每个汉字转换全拼)

    这篇文章主要介绍了Mysql中文汉字转拼音的实现,并且每个汉字会转换全拼,使用Mysql自定义函数实现,需要的朋友可以参考下
    2014-06-06
  • MySQL中数据类型相关的优化办法

    MySQL中数据类型相关的优化办法

    这篇文章主要介绍了MySQL中数据类型相关的优化办法,包括使用多列索引等相关的优化方法,需要的朋友可以参考下
    2015-07-07
  • MySQL备份原理详解

    MySQL备份原理详解

    备份是数据安全的最后一道防线,对于任何数据丢失的场景,备份虽然不一定能恢复百分之百的数据(取决于备份周期),但至少能将损失降到最低
    2016-05-05
  • MySQL 数据库对服务器端光标的限制

    MySQL 数据库对服务器端光标的限制

    从MySQL 5.0.2开始,通过mysql_stmt_attr_set() C API函数实现了服务器端光标。服务器端光标允许在服务器端生成结果集,但不会将其传输到客户端,除非客户端请求这些行。
    2009-03-03
  • mysql-connector-java与Mysql、Java的对应版本问题

    mysql-connector-java与Mysql、Java的对应版本问题

    这篇文章主要介绍了mysql-connector-java与Mysql、Java的对应版本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • MySQL数值类型溢出的处理方法

    MySQL数值类型溢出的处理方法

    这篇文章主要给大家介绍了关于MySQL数值类型溢出的处理方法,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08

最新评论