我有下表:

id name priority urgency output
1  mark 0        0       A
2  mark 0        1       B
3  mark 0        0       C
4  erik 0        0       D
5  erik 0        0       E


我想增加列表中每个名称的紧急程度最高的条目的优先级,如果紧急程度相等,则列表中最老的条目的优先级更高。然后,我希望该列表中每个名称具有最高优先级的条目。因此,第一次运行后,该表应如下所示:

id name priority urgency output
1  mark 0        0       A
2  mark 1        1       B
3  mark 0        0       C
4  erik 1        0       D
5  erik 0        0       E


然后,我希望从数据库中获得的是每个名称具有最高优先级的链接,因此:

id name priority urgency output
2  mark 1        1       B
4  erik 1        0       D


那里有人知道这是怎么做的吗?

最佳答案

更新查询:

获取每个名称的最高优先级记录:

Update user_priority u1,
(
select min(id) as id
from user_priority inner join
(select name,max(urgency)as max_urg
from user_priority
group by name) as user_urgency on (user_priority.name = user_urgency.name
and user_priority.urgency = user_urgency.max_urg)
group by user_priority.name) u2

set priority =priority +1

where u1.id = u2.id

09-11 09:36