我很难根据第一个表值将数据库表记录传输到另一个表中。 让我展示一下这个 - 这是我的第一张桌子(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 中的其他问题获取信息来完成此任务。但我无法想象该怎么做。
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 ;
数据
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