根据索引将列值从一个位置更新到另一个位置

时间:2015-12-11 08:52:47

标签: mysql sql-update

您好我想将表格的列从一个位置更新到另一个位置。假设我有100行,我想用一个数字更新位置50-90的字段。示例:{id} 2的category应该从第50行开始更新到第90行。

我在mysql查询下面尝试过:

Update table set category = 2 limit 50, 40

这会出错。请其他任何方式。

2 个答案:

答案 0 :(得分:0)

不幸的是,你不能在UPDATE查询中使用范围LIMIT,但是你可以使用表连接。

尝试这样的事情:

UPDATE `table` `t1` 
INNER JOIN (SELECT `id` FROM `table` WHERE `category`='2' LIMIT 50, 40) `t2` ON `t2`.`id`=`t1`.`id` 
SET [YOUR CUSTOM SET]

注意:如果您有特定订单,可以在INNER JOIN SELECT查询中指定。

答案 1 :(得分:-1)

对此查询使用for循环

update user
SET username=(select * from (select username FROM user WHERE id=6) A), second_field=(select * from (select second_field FROM user WHERE id=6) B)
WHERE id=5;

在你的情况下:

update category 
    SET category_name=(select * from (select category_name FROM category WHERE id=50) A), category_value=(select * from (select category_value FROM category WHERE id=50) B)
    WHERE id=49;


update category 
    SET category_name=(select * from (select category_name FROM category WHERE id=51) A), category_value=(select * from (select category_value FROM category WHERE id=51) B)
    WHERE id=50;

    .
    .
    .

update category 
    SET category_name=(select * from (select category_name FROM category WHERE id=90) A), category_value=(select * from (select category_value FROM category WHERE id=90) B)
    WHERE id=89;