[英]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;
如果希望所有行都從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.