这是我的表:
Id名称计数
1 Apple 1
2 Peach 1
如果我只将Name和MySql设置为“安全更新模式”(在此模式下,无法使用out键更新表中的术语)。所以我首先需要按名称获取Id,然后更新行。
在SqlServer中,我可以像下面这样做:
DELCARE @Id INT;
SELECT @Id=(SELECT Id FROM MyTable WHERE Name='Apple')
IF(@Id IS NOT NULL)
BEGIN
UPDATE MyTable
SET Count=2
WHERE Id=@Id
END
在MySql中,我该怎么办?
答案 0 :(得分:2)
您需要使用set关键字来声明变量,但实际上并不需要它。
UPDATE MyTable
SET Count=2
WHERE ID IN ( SELECT * FROM (SELECT ID FROM MyTable WHERE name = 'Apple') S)
这不是世界上效率最高的,但是当更新查询依赖于它正在更新的表时,它可以作为一种解决方法。