簡體   English   中英

將一行的結果調整為其他行

[英]Adapt result of one row to other rows

我如何以這種方式編寫查詢,以使CASE WHEN-語句的結果適合每一行。 這樣每一行的結果都是5。非常感謝!

CREATE TABLE DATA
(`Person` CHAR(4),
 `Apples` INT(1),
 `Tomatoes` INT(1),
 `Result` INT(1)
  );

 INSERT INTO DATA
 (Person, Apples, Tomatoes)
  VALUES ('Mark' , 1, 2),
    ('Sepp',  2, 3),
    ('Carl',  3, 1);

 UPDATE  DATA
 SET `Result` = CASE WHEN (`Person` =  'Sepp') THEN (`Apples` + `Tomatoes`)  END;

結果表應為

SQL小提琴演示

如果希望所有行都從Sepps行中獲取值,則可以使用子查詢來實現。

“正常”的方式是這樣做的:

UPDATE DATA
SET Result = (SELECT Apples + Tomatoes FROM DATA WHERE Person =  'Sepp')

但這很可能會給您MySQL錯誤( 無法為update指定目標表 ),一種解決方法是在查詢中引入另一個級別,強制使用臨時表,如下所示:

UPDATE DATA
 SET Result = (
   SELECT Value FROM (
     SELECT Apples + Tomatoes AS Value 
     FROM DATA WHERE Person =  'Sepp'
   ) t
 );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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