我有下表:
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