gpt4 book ai didi

MySQL:如果在第二个表中找到匹配的 id 并添加缺少的内容,第一个表中的数据如何为 "overwrite"

转载 作者:行者123 更新时间:2023-11-29 01:49:35 27 4
gpt4 key购买 nike

我有两个相似的表:

balance_first


+----+---------+
| id | balance |
+----+---------+
| 1 | 12 |
| 2 | 50 |
| 3 | 0 |
| 4 | 55 |
+----+---------+



balance_second

+----+---------+
| id | balance |
+----+---------+
| 2 | 7.5 |
| 4 | 2.33 |
| 10 | 1.23 |
+----+---------+

我确实尝试过使用 LEFT JOIN,但无法得到结果。而且,因为最终表大约有 10k 行,所以我不会使用 IN 子句。

最终预期结果

id 2 和 id 4 也在 balance_second 表中,所以我想移动到 balance_first 表 OVERWRITING balance_first;

ID 10 不在 LEFT 表中,所以我们添加它

最后id 1和3只在balance_first中,所以我们需要在final_result中保持不变

+----+---------+
| id | balance |
+----+---------+
| 1 | 12 |
| 2 | 7.5 |
| 3 | 0 |
| 4 | 2.33 |
| 10 | 1.23 |
+----+---------+

这是一个 SQL fiddle :http://sqlfiddle.com/#!9/eabdfe/1

最佳答案

您可以从balance2 获取数据并使用UNIONbalance 添加数据,这在balance2 中不可用>.

SELECT ID, balance FROM balance2
UNION
SELECT b.ID, b.balance FROM balance b
LEFT JOIN balance2 b2 ON b2.ID = b.ID
WHERE b2.ID IS NULL
ORDER BY ID

输出:

| ID | balance |
|----|---------|
| 1 | 12 |
| 2 | 7.5 |
| 3 | 0 |
| 4 | 2.33 |
| 10 | 1.23 |

See this SQLFiddle

关于MySQL:如果在第二个表中找到匹配的 id 并添加缺少的内容,第一个表中的数据如何为 "overwrite",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50350744/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com