MySql - 如何根据值将表数据插入到另一个表中?

问题描述 投票:0回答:1

我很难根据第一个表值将数据库表记录传输到另一个表中。 让我展示一下这个 - 这是我的第一张桌子(dr_machine)

mID 代码 锯切类型 部分
1 0058 之字形 L01
2 0065 之字形 L01
3 0089 拉拔器 L02
4 1124 单针 L03
5 8796 双针 L04

这是我的第二张桌子(dr_tv_table)

sID L01 L02 L03

我想从 dr_machine 表中获取 sawing_type 并将其逐节插入到 dr_tv_table 中。 我尝试通过存储过程和 php 循环通过从 Stackoverflow 中的其他问题获取信息来完成此任务。但我无法想象该怎么做。

我附上一张图片来理解Image我在说什么。

DELIMITER $$
CREATE PROCEDURE insert_into_table(cart_id int )
BEGIN 
DECLARE i int default 1 ;

while(i<10)      
Do
   insert into dr_tv_table (i
                ) 
   select  `sawing_type`

   from dr_machinewhere section='L01' ;
   set i=i+1;
   END WHILE;
END$$
DELIMITER ;
php mysql mysqli
1个回答
0
投票

数据

CREATE TABLE dr_machine(
   mID           INTEGER  NOT NULL 
  ,Code          INTEGER  NOT NULL
  ,sawing_Type VARCHAR(100) NOT NULL
  ,section       VARCHAR(100) NOT NULL
);
INSERT INTO dr_machine
(mID,Code,sawing_Type,section) VALUES 
(1,0058,'Zigzag','L01'),
(2,0065,'Zigzag','L01'),
(3,0089,'Puller','L02'),
(4,1124,'Single Needle','L03'),
(5,8796,'Double Needle','L04');

使用

Max
Group By
Case 

SELECT
mID,  
MAX(CASE WHEN (section='L01') THEN sawing_Type ELSE NULL END) AS L01,
MAX(CASE WHEN (section='L02') THEN sawing_Type ELSE NULL END) AS L02,
MAX(CASE WHEN (section='L03') THEN sawing_Type ELSE NULL END) AS L03,
MAX(CASE WHEN (section='L04') THEN sawing_Type ELSE NULL END) AS L04
FROM 
dr_machine
GROUP BY 
mID

dbfiddle

© www.soinside.com 2019 - 2024. All rights reserved.