当有两个相同的值时,SQL UPDATE SET一列等于0.000
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当有两个相同的值时,SQL UPDATE SET一列等于0.000相关的知识,希望对你有一定的参考价值。
所以这里是我试图更新列距离的问题,首先是为每个ownerID加上距离,之后当有一个具有相同id地址的记录时,第一条记录应该记忆距离,第二条记录应该是0.000
这是预期的结果
到目前为止,我做了第一部分,使用此代码计算距离
UPDATE Action_Distance
SET [distance]=(SELECT sum([distance])
FROM Action a2
WHERE [name]='travel' and a2.ownerID = Action_Distance.ownerId
)
WHERE [name]='drive_through'
我不明白应该怎么做。
答案
假设id_action
对于每一行都是唯一的,那么CASE
表达式和NOT EXIST
子查询可以这样使用:
UPDATE Action_Distance A
SET [distance] = CASE
WHEN NOT EXISTS (SELECT 'anything'
FROM Action_Distance B
WHERE B.[name] = 'drive_through'
AND a.ownerId = b.ownerId
AND a.id_action > b.id_action)
THEN (SELECT SUM([distance])
FROM Action a2
WHERE [name] = 'travel'
AND a2.ownerID = a.ownerId)
ELSE 0
END
WHERE
[name] = 'drive_through'
以上是关于当有两个相同的值时,SQL UPDATE SET一列等于0.000的主要内容,如果未能解决你的问题,请参考以下文章
sql - 当我得到 2 个或更多具有相同值的值时,仅更新 1 个(查询找到的第一个)值的方法?
sql [UPDATE SET WHERE]编辑现有行#SQL中的值
Pandas 获得与 SQL 语句相同结果的 Pythonic 方式是啥:“UPDATE-LEFT JOIN - SET - WHERE”?