没有主键的MySQL更新

时间:2018-08-30 19:20:19

标签: mysql sql

我正在寻找如何在选择项上更新像LIMIT 2,2这样的行

有一个例子:

col1 | col2
 5      10
 5      10
 5      10

我想这样更新第二行:

col1 | col2
 5      10
 1      10
 5      10

我知道行号,所以我想要这样的东西:

UPDATE table
SET col1 = 1
WHERE col1 = 5
LIMIT 2, 1

我们不能使用限制,但是我知道这是可以实现的,HeidiSQL可以做到,我正试图弄清楚他们的情况

谢谢

1 个答案:

答案 0 :(得分:0)

如果您需要更新特定的行,则需要一个或多个可用作主键的列。

SQL适用于行集,并且您只能更新可以标识为属于该行的行。

例如,您可以

UPDATE Customers SET Preferred=True WHERE TotalSales > 1000

这将为销售量超过1000的任何客户设置“首选”标志。该客户可能是一个客户,也可能是一百万个客户,甚至没有。

进行所要求的单行更新的唯一方法是采用某种方法来标识该行。在许多数据库服务器中,您可以配置IDENTITY或SEQUENCE列,这些列将自动为每一行分配一个唯一的ID。

您可以添加具有IDENTITY属性集的ID列,这将使您:

ID | col1 | col2
 1    5     10
 2    5     10
 3    5     10

因此更新该特定行将是:

UPDATE table SET col1 = 1 WHERE ID = 2