我正在尝试更新我的球员在现在的位置。此表由名称、id、点和位置组成。
点的默认值为 0
那么位置就是 Unranked
.
如果两个用户有相同的点,那么位置将是相同的。
演示表
id | name | points | position
1 | a | 0 | Unranked
2 | b | 120 | 2
3 | c | 130 | 3
4 | d | 120 | 1
要求的结果应该是
id | name | points | position
1 | a | 0 | Unranked
2 | b | 120 | 2
3 | c | 130 | 1
4 | d | 120 | 2
查询将类似于unranked update mytable set position = 'Unranked' Where points = 0
如何使用点和位置集查询?
3条答案
按热度按时间83qze16e1#
如果您的mysql版本(mysql 8.x)支持窗口功能,则可以执行以下操作:
然后,可以像gordon linoff的回答一样,将选定的数据加入到更新中。
jdzmm42g2#
这是一种痛苦。您可以通过子查询获得所需的结果,但在子查询中这并不是很有效
update
条款。在一个select
,您可以执行以下操作:您现在可以将其合并到更新中:
ne5o7dgx3#
不需要保留计算列
position
在table上。以下适用于所有版本:如果你想抓住柱子
position
在您的表中,您可以使用以下update
通过主列绑定的语句id
:rextester演示