我需要在“myTable”中为第5行到第10行更新“myColumn”列。我想我可以执行以下操作但显然它给了我一个语法错误:
UPDATE myTable SET myColumn = 'mamal' LIMIT 5,10;
由于
答案 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)
subquery
和join
进行 尝试,请将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的一种技巧。