簡體   English   中英

更新條件返回多個值的行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM