Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建MySQL语句将数组数据拆分为新的表格式_Mysql_Sql - Fatal编程技术网

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

如何创建MySQL语句将数组数据拆分为新的表格式,mysql,sql,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->

我有一个旧表,数据存储为

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语句来完成这项工作吗?

不,最好用PHP代码来完成。虽然MySQL确实有一种通过
FIND\u IN_SET()
查找值的方法,但它没有一种与
explode()
等效的方法来轻松地将它们分开。在MySQL过程中编写大量难看的循环和字符串操作是可能的,但在PHP代码中要容易得多

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


但是,您正在整理这些数据并正确地规范化列,这是件好事。

+1感谢您提出正确规范化这些数据的倡议。谢谢@Michael。看起来
FIND_IN_SET()
适合我目前的需要。