我在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可以从“药物”中获取。表
答案 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并将其插入摘要中。