如何创建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()
适合我目前的需要。