从一个表到另一个表的MySQL数据

从一个表到另一个表的MySQL数据,mysql,Mysql,我在MySQL中有3个表,结构如下 表1:药品 字段: 医疗id 医学名称 样本数据: 表2:交易 字段:tru id、tru medicine、tru city 样本数据: 表3:概要 字段:sm_id、sm_medicine 样本数据: 我想做的是,在一个查询中,可以使用子查询,准备好“transactions”表中的数据并将其插入“summary”表,但应该插入medicine name和medicine id。药品id可以从“药品”表中提取。您可以使用“插入到表中”从其他表中选择并借助嵌

我在MySQL中有3个表,结构如下

表1:药品

字段: 医疗id 医学名称

样本数据: 表2:交易

字段:tru id、tru medicine、tru city

样本数据: 表3:概要

字段:sm_id、sm_medicine

样本数据: 我想做的是,在一个查询中,可以使用子查询,准备好“transactions”表中的数据并将其插入“summary”表,但应该插入medicine name和medicine id。药品id可以从“药品”表中提取。

您可以使用“插入到表中”从其他表中选择并借助嵌套选择来执行此操作:

INSERT INTO summary (sm_id, sm_medicine)
SELECT (SELECT MAX(sm_id)+1 FROM summary), 
        (SELECT med_id FROM medicines WHERE med_name = transactions.tr_medicnie)
FROM transactions;
首先,您在摘要中获得最大id,并使用一个SELECT MAXsm_id+1 FROM summary将其增加,如果将AUTO_INCREMENT设置为列,则不需要这样做


第二个嵌套的select select med_id FROM medicines WHERE med_name=transactions.tr_medicnie它模拟表medicines和事务之间的连接,在每个事务中获取药物id并将其插入摘要中

到目前为止你试过什么代码?
tr_id   | tr_medicine   | tr_city
1       | Panadol   | London
2       | Tylenol   | Milan
3       | Brufen    | New York
sm_id   | sm_medicine
1       | 1
2       | 2
3       | 3
INSERT INTO summary (sm_id, sm_medicine)
SELECT (SELECT MAX(sm_id)+1 FROM summary), 
        (SELECT med_id FROM medicines WHERE med_name = transactions.tr_medicnie)
FROM transactions;