1
我有一個名爲ice_cream
的MySQL數據庫,其中有三個表,users
,flavors
和favorites
。 favorites
中的每條記錄都有對用戶和風味的引用,並且用戶能夠擁有多種冰淇淋風味。替換MySQL記錄的子集
我想寫一個事務來完全替換另一組收藏夾中的用戶的收藏夾。例如,當API接受
PUT /user/100/favorites
{
"flavors": {
"2": { "stars": 2 },
"3": { "stars": 5, "comments": "Changed my life" },
"18": { "stars": 4, "comments": " " },
"24": { "stars": 4 }
}
}
的favorites
表應該從
| id | user_id | flavor_id | stars | comments |
| --- | ------- | --------- | ----- | ------------------ |
| 200 | 100 | 2 | 2 | Tastes OK |
| 201 | 100 | 4 | 3 | |
| 202 | 100 | 5 | 3 | |
改爲
| id | user_id | flavor_id | stars | comments |
| --- | ------- | --------- | ----- | ------------------ |
| 200 | 100 | 2 | 2 | |
| 201 | 100 | 3 | 5 | Changed my life |
| 203 | 100 | 18 | 4 | |
| 204 | 100 | 24 | 4 | |
什麼是最有效的一組語句來做到這一點?
考慮的要點:
- 我不關心的是保住主ID一致。
- 用戶真的進入小批量工藝冰淇淋場景,每次交易通常會替換大約5000條記錄。