如何创建MySQL语句以将数组数据拆分为新的表格格式

时间:2012-04-29 13:17:58

标签: mysql sql

我有旧表,数据存储为

tbl_id  tbl_data
--------------------
1       1,2,3,4,5,6
2       3,4,5

现在我想将这些转换为多对多关系表。

user_id user_option
-------------------
1       1  
1       2
1       3
...

基本上我在php中插入数据

$old = explode(",", $data['tbl_data']);
$query = $db->query("SELECT tbl_id, tbl_data FROM old_table"); 
  while($fetch = $db->fetch($query)) {
    $db->query("INSERT INTO new_table SET .....");
  }

我可以知道,有一种方法可以通过单个MySQL语句完成这项工作吗?

1 个答案:

答案 0 :(得分:2)

不,你最好用PHP代码来做。虽然MySQL确实有办法通过FIND_IN_SET()定位值,但它没有与explode()相同的方法来轻松地将它们分开。在MySQL程序中编写很多丑陋的循环和字符串操作是可能的,但在PHP代码中更容易

MySQL string function docs下面的注释中有一些处理字符串拆分的建议,但它们并没有真正解决循环插入以规范化列。在像PHP这样的脚本语言中处理它真的更容易。

但是你要对它进行排序并正确地对列进行标准化是很好的。