mysql无主键更新

e4eetjau  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(425)

我想弄清楚如何更新一行,比如select上的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可以做到这一点,我试图找出他们是如何做到的
谢谢

6kkfgxo0

6kkfgxo01#

如果需要更新特定行,则需要一个或多个列可以用作主键。
sql在行集合上工作,您只能更新可以标识为属于该集合的行。
例如,你可以

UPDATE Customers SET Preferred=True WHERE TotalSales > 1000

这将为销售额超过1000的任何客户设置“首选”标志。这可能是一个客户或一百万或没有。
要进行您所询问的单行更新,唯一的方法是使用某种方法来标识行。在许多数据库服务器中,您可以配置一个标识或序列列,该列将自动为每一行分配一个唯一的id。
您可以使用identity属性集添加一个id列,这将使您:

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

因此,更新特定行将是:

UPDATE table SET col1 = 1 WHERE ID = 2

相关问题