![](/img/trans.png)
[英]How to write this UPDATE in MSQL, to update multiple rows with different WHERE condition
[英]Update rows with where condition returning multiple values
考慮以下兩個表
表A
ID | Name | Price | Size
1 aaa 10 L
2 bbb 12 L
3 ccc 15 L
4 ddd 20 XL
表B
ID | Type
1 X
2 X
3 Y
4 Z
現在,我想將表A的價格屬性更新1%,其中大小為L,類型為X。我編寫了此更新語句
UPDATE A SET price = price * 1.01
WHERE size = 'L' AND id = (SELECT id FROM B WHERE type = 'X');
但這給了我
ORA-01427:單行子查詢返回多個行錯誤。
我知道問題出在“ id =(從B WHERE類型中選擇SELECT id ='X');” 因為它給出了多個值。
請給我一些有關如何解決此問題的想法。
此選擇返回2行
SELECT id FROM B WHERE type = 'X'
結果
ID | Type
1 X
2 X
因此,如果您比較值以選擇返回多個行,請使用IN
UPDATE A
SET price = price * 1.01
WHERE size = 'L'
AND id IN (SELECT id FROM B WHERE type = 'X');
從A更新一個SET a.price = a.price * 1.01 a a內部連接B b在a.id = b.id上,其中b.type ='X'和a。 大小='L';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.