首页 > 解决方案 > mysql:将列名更改为数据的值

问题描述

我想创建另一个表,列名是表的值之一。我希望动态更改列名。

例如,

+-----------------+------------+------------+--------------+---------------+
| name            | continent  | area       | population   | gdp           |
+-----------------+------------+------------+--------------+---------------+
| Afghanistan     | Asia       | 652230     | 25500100     | 20343000      |
| Albania         | Europe     | 28748      | 2831741      | 12960000      |
| Algeria         | Africa     | 2381741    | 37100000     | 188681000     |
+-----------------+------------+------------+--------------+---------------+

+-------------+
| Asia        |
+-------------+
| Afghanistan |
+-------------+

+-------------+
| Europe      |
+-------------+
| Albania     |
+-------------+

+-------------+
| Africa      |
+-------------+
| Algeria     |
+-------------+

这在mysql中可能吗?我不知道如何开始这个。

标签: mysqlsql

解决方案


我可以提供一个算法

  1. 创建表triggerinsert
  2. 使用下面的 mysql 查询检查表是否存在以大陆的名称

SELECT * FROM information_schema.tables WHERE table_schema = 'yourdb' AND table_name = 'continentName' LIMIT 1;

  1. 如果存在,则insert使用 name 的新值进入该表
  2. elsecreate带有大陆和insert值的表

希望能帮助到你


推荐阅读