如何将表名连接到行值以重命名列

时间:2017-08-03 08:52:48

标签: mysql sql

这是我想要做的:

我拿到了桌子" t01"

+----+-------------+-----+  
| ge | f0          |  f1 |
+----+-------------+------  
|  1 | 10          |  5  |
|  2 | 2           |  4  |
|  3 | 58          |  88 |
|  4 | 66          |  9  |
+----+-------------+-----+ 

另一个表t02:

+----+-------------+------+-----+
| ge | f0          |  f1  | f2  |
+----+-------------+------+-----+  
|  1 | 1           |  75  |  10 |
|  2 | 25          |  74  |  55 |
|  3 | 5           |  788 | 66  |
|  4 | 6           |  79  | 11  |
+----+-------------+------+-----+ 

另一张表tFE

+----+-------------+---------+
| ge | f0     | f1    |  f2  |
+----+-------------+---------+  
|  1 | t01    |  f0   |  Code|
|  2 | t01    |  f1   |  City|
|  3 | t02    |  f0   |Number|
|  4 | t02    |  f1   | Index|
|  5 | t02    |  f2   | CIP  |
+----------------------------+

我想做的是这样的: 表t01:

+----+-------------+-----+  
| ge | Code        | City|
+----+-------------+------  
|  1 | 10          |  5  |
|  2 | 2           |  4  |
|  3 | 58          |  88 |
|  4 | 66          |  9  |
+----+-------------+-----+ 

表t02:

 +----+-------------+------+-----+
| ge | Number      |Index | CIP |
+----+-------------+------+-----+  
|  1 | 1           |  75  |  10 |
|  2 | 25          |  74  |  55 |
|  3 | 5           |  788 | 66  |
|  4 | 6           |  79  | 11  |
+----+-------------+------+-----+ 

我有数百个表,如t01,t02,其中一些列有更多列,并且他们的列的名称在tFE中,我想用tFE中的真实名称替换他们的列名f0,f1

1 个答案:

答案 0 :(得分:0)

我可以推荐一些脚本,可用于改变您熟悉的任何语言的列名。我用PHP来证明这个问题。

使用以下方法从表tFE获取所有数据:

SELECT * FROM `tFE`;

迭代上述查询的结果。

foreach($results as $result) {
    $tableName = $result[0]['fo'];
    $oldColumn = $result[0]['f1'];
    $newColum = $result[0]['f2'];
    // Run following query to change the columnName using PDO
    "ALTER TABLE {$tableName} Change  {$oldColumn} {$newColumn} ["Data Type"];"
}