如何解决SQL根据某些条件从另一个表中插入/更新到一个表中
+-----------+-------+
| productid | stock |
+-----------+-------+
| 1 | 10 |
| 2 | 20 |
| 3 | 30 |
+-----------+-------+
我需要从另一个名为table2的表中插入/更新到上表:
+-----+-------+
| PId | stock |
+-----+-------+
| 1 | 20 |
| 2 | 40 |
| 4 | 10 |
+-----+-------+
我想在以下情况下执行SQL查询:
- 如果表1中的Productid中存在表2中的PId,则需要更新库存值。
- 如果table1中的Productid中不存在table2中的PId,则需要将stock的值作为table2中table1中的新行插入。
+-----------+-------+
| productid | stock |
+-----------+-------+
| 1 | 20 |
| 2 | 40 |
| 3 | 30 |
| 4 | 10 |
+-----------+-------+
解决方法
您需要MERGE语句。如今,大多数数据库管理系统都支持它:
MERGE INTO table1
USING table2
ON table1.productid=table2.pid
WHEN MATCHED THEN UPDATE SET
stock = table2.stock
WHEN NOT MATCHED THEN INSERT VALUES (
table2.pid,table2.stock
)
;
SELECT * FROM table1 ORDER BY 1;
-- out OUTPUT
-- out --------
-- out 3
-- out (1 row)
-- out
-- out Time: First fetch (1 row): 27.090 ms. All rows formatted: 27.155 ms
-- out productid | stock
-- out -----------+-------
-- out 1 | 20
-- out 2 | 40
-- out 3 | 30
-- out 4 | 10
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。