如何在mysql或mariadb中的另一列中的两个唯一值之间更新列?
考虑一个名为 Example
有三列: Id
:自动递增整数id RandomId
:一系列随机且唯一的guid IsUpdated
:当前只包含空值的列,需要更新
* ----------------------------------------------------- *
| Id | RandomId | IsUpdated |
| ----------------------------------------------------- |
| 1 | c446980b-cf2f-4f2d-a27b-28d6bde6415d | NULL |
| 2 | d6a1a52c-d073-4019-836a-67cf6551d958 | NULL |
| 3 | 7a339a6a-8e57-4373-84fd-1b40ee51c884 | NULL |
| 4 | 56b908a7-fb07-4f4c-a25d-699cf40cf690 | NULL |
| 5 | fac75ce6-a605-453a-958c-74f197e20a11 | NULL |
* ----------------------------------------------------- *
我想更新 IsUpdated
在两个特定的guid之间,例如:
UPDATE Example
SET IsUpdated = 1
WHERE RandomId >= 'd6a1a52c-d073-4019-836a-67cf6551d958' -- Starting Here
AND RandomId <= '56b908a7-fb07-4f4c-a25d-699cf40cf690' -- Ending Here
生成的表应如下所示:
* ----------------------------------------------------- *
| Id | RandomId | IsUpdated |
| ----------------------------------------------------- |
| 1 | c446980b-cf2f-4f2d-a27b-28d6bde6415d | NULL |
| 2 | d6a1a52c-d073-4019-836a-67cf6551d958 | 1 |
| 3 | 7a339a6a-8e57-4373-84fd-1b40ee51c884 | 1 |
| 4 | 56b908a7-fb07-4f4c-a25d-699cf40cf690 | 1 |
| 5 | fac75ce6-a605-453a-958c-74f197e20a11 | NULL |
* ----------------------------------------------------- *
但是由于id不是连续的,所以这种方法似乎不起作用。
更新列的最有效方法是什么( IsUpdated
)在另一列中的两个唯一值之间( RandomId
)?
1条答案
按热度按时间4c8rllxm1#
你需要过滤
id
相反。我推荐update ... join
语法:请注意,这并不能严格保证guid在第一行和最后一行上是匹配的(也可以反过来)。您可以更具体地使用两个联接: