我有兩個MYSQL表「shirts_in_box」,「trousers_in_box」代表可以在同一個盒子裏的兩個不同類別的對象:襯衫和褲子,以及每個盒子的數量。複雜的SQL更新聲明
表 「shirts_in_box」 有我有應對以下情況列 「shirt_id,數量」 和 「trousers_in_box」 中的列 「trouser_id,數量」
:
1)我開始在box_id = 「foo」 的兩個項目:如表 「shirts_to_box」 有一排
shirt_id = 'xxx', quantity : '1'
和 「trousers_to_box」 有一排
trouser_id = 'www', quantity : '2'
2)項box_id =「富」的更新列表被提交時,它看起來像
trousers_to_box :
box_id : foo, trousers_id : 'aaa', quantity : '5'
shirts_to_box :
box_id : foo, shirts_id : 'xxx', quantity : '2'
3)我應該藉此和更新「shirts_to_box」,「trousers_to_box」,所以,上述的所有兩個表中的條目具有box_id ='foo',即
shirts_to_box :
UPDATE shirt_id = 'xxx', quantity : '1' to quantity = 2
trousers_to_box :
ADD trouser_id = 'aaa', quantity : '5'
DELETE trouser_id = 'www', quantity : '2'
此刻,我的方法效率不高。我在兩個單獨的表上做了兩個單獨的查詢,並分別爲每個表添加/更新/刪除。
有沒有辦法在一個查詢中做到這一切?或者甚至比我現在擁有的更有效的方式?
感謝您的回覆!問題是襯衫和褲子ID是從其他桌子上出來的,所以我不能保證不會有id的重疊。另外我不認爲這會刪除不在框中新項目列表中的行 – Petrov
最簡單的解決方案是使用兩個表:'item'和'item_type'(而不是'shirt','trouser '......)。然後,您不再需要'item_in_box.item_type'列,擁有不同的ID,並且能夠推廣您的代碼。 – zessx
嗯,那麼item和item_type的列會是什麼? – Petrov