如何更新一系列行号的列?

时间:2018-01-18 03:26:56

标签: mysql sql

我需要在“myTable”中为第5行到第10行更新“myColumn”列。我想我可以执行以下操作但显然它给了我一个语法错误:

UPDATE myTable SET myColumn = 'mamal'  LIMIT 5,10;

由于

4 个答案:

答案 0 :(得分:3)

SQL表代表无序集。如果您有主键,则可以使用它进行排序。

MySQL确实允许限制,但不允许偏移,因此您可以更新前五行:

UPDATE myTable
    SET myColumn = 'mamal'
    ORDER BY id
    LIMIT 5;

但没有偏移。

你可以使用JOIN

解决这个问题
UPDATE mytable t JOIN
       (SELECT id
        FROM mytable tt
        ORDER BY id
        LIMIT 5, 10
       ) tt
       ON tt.id = t.id
    SET myColumn = 'mamal';

答案 1 :(得分:3)

您可以根据表格的主键选择和更新列值。

如果要更改行限制,则意味着您可以更改限制值。

在下面的代码中ID只是表格的Primay Key

UPDATE myTable SET myColumn='mamal' WHERE id IN ( SELECT id FROM ( SELECT id FROM myTable where id ORDER BY id ASC LIMIT 5,5 ) tmp )

答案 2 :(得分:1)

使用subqueryjoin进行

尝试,请将join中的<column>列替换为真实的

UPDATE myTable mt
INNER JOIN (SELECT <column> FROm myTable LIMIT 5,10) t ON t.<column> = mt.<column>
SET mt.myColumn = 'mamal'

答案 3 :(得分:1)

试试这个:

update myTable 
set myColumn = 'mamal' 
where your_primary_key 
in (select * from (select your_primary_key from myTable limit 5,5) as t);

MySQL在offset子句中支持limit,但SELECT仅支持 。所以正确的语法是:LIMIT offset,row_count。在这种情况下,它应该是limit 5,5,而不是limit 5,10。检查:Select Syntax

您也可以在LIMIT中使用UPDATE,但在这种情况下您只能指定row_count。检查:Update Syntax

如果您没有主键,只需使用任何唯一的密钥即可 为什么在这里需要select * from,这只是绕过错误discribed here的一种技巧。