如何以这种方式编写查询,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;
答案 0 :(得分:1)
如果您希望所有行都从Sepps行获取值,您可以使用子查询来完成。
“正常”的方式是这样做:
UPDATE DATA
SET Result = (SELECT Apples + Tomatoes FROM DATA WHERE Person = 'Sepp')
但这很可能会给你一个MySQL错误(无法指定更新的目标表),解决方法是在查询中引入另一个级别,强制使用临时表,像这样:
UPDATE DATA
SET Result = (
SELECT Value FROM (
SELECT Apples + Tomatoes AS Value
FROM DATA WHERE Person = 'Sepp'
) t
);