在MySQL中,可以使用UPDATE和CASE语句来更新表中的数据,并且可以使用列别名来引用列。以下是一个示例,展示如何在UPDATE语句中使用CASE和列别名:
假设有一个名为users
的表,包含id
、name
和age
列。
要根据条件更新age
列,可以使用如下的UPDATE语句:
UPDATE users
SET age = CASE
WHEN name = 'John' THEN 30
WHEN name = 'Alice' THEN 25
ELSE age
END;
在这个例子中,当name
等于'John'时,将age
更新为30;当name
等于'Alice'时,将age
更新为25;否则,保持age
不变。
如果要在UPDATE语句中使用列别名,可以使用内部查询或临时表来实现。以下是一个示例:
UPDATE users AS u
INNER JOIN (
SELECT id, name, age AS new_age
FROM users
) AS tmp ON u.id = tmp.id
SET u.age = CASE
WHEN tmp.name = 'John' THEN tmp.new_age + 5
WHEN tmp.name = 'Alice' THEN tmp.new_age - 5
ELSE tmp.new_age
END;
在这个例子中,我们使用内部查询来创建一个临时表tmp
,将age
列别名为new_age
。然后,使用UPDATE语句和CASE语句根据条件更新主表users
的age
列。
需要注意的是,使用内部查询或临时表可能会对性能产生一些影响。在实际应用中,请根据数据规模和查询复杂性进行评估和测试。
标签:Case,语句,name,age,Update,UPDATE,tmp,CASE From: https://blog.51cto.com/M82A1/7389400