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

时间:2017-05-10 05:10:58

标签: mysql

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

表1:药物

字段: med_id med_name

样本数据:

med_id  | med_name
1       | Panadol
2       | Tylenol
3       | Brufen

表2:交易

字段:tr_id,tr_medicine,tr_city

样本数据:

tr_id   | tr_medicine   | tr_city
1       | Panadol   | London
2       | Tylenol   | Milan
3       | Brufen    | New York

表3:摘要

字段:sm_id,sm_medicine

样本数据:

sm_id   | sm_medicine
1       | 1
2       | 2
3       | 3

我想要做的是,在一个查询中(可以使用子查询),来自'交易的现成数据'表格并将其插入“摘要”中表,但医药名称,医学ID应插入。医学ID可以从“药物”中获取。表

1 个答案:

答案 0 :(得分:1)

您可以使用INSERT INTO table SELECT from other table并在嵌套选择的帮助下执行此操作:

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 MAX(sm_id)+1 FROM summary)来增加该ID,如果AUTO_INCREMENT设置为该列,则不需要这样做。

第二个嵌套选择(SELECT med_id FROM medicines WHERE med_name = transactions.tr_medicnie)它模仿表药品和交易之间的连接,您在每个交易中获得药品ID并将其插入摘要中。