Mysql 专门针对这种情况?我必须用不止一条sql语句来完成,对吗?如果你计算创建临时表并插入其中所需的语句,那么是的,你不能用一条语句来完成,但实际的更新是在一次快照中完成的。这很好,但是如果你有100多条记录,你会怎么做呢?这对100个值来说很好,但我可能会将i

Mysql 专门针对这种情况?我必须用不止一条sql语句来完成,对吗?如果你计算创建临时表并插入其中所需的语句,那么是的,你不能用一条语句来完成,但实际的更新是在一次快照中完成的。这很好,但是如果你有100多条记录,你会怎么做呢?这对100个值来说很好,但我可能会将i,mysql,sql,arrays,sql-update,Mysql,Sql,Arrays,Sql Update,专门针对这种情况?我必须用不止一条sql语句来完成,对吗?如果你计算创建临时表并插入其中所需的语句,那么是的,你不能用一条语句来完成,但实际的更新是在一次快照中完成的。这很好,但是如果你有100多条记录,你会怎么做呢?这对100个值来说很好,但我可能会将id/值对存储在一个表中,并使用联接进行更新。这很好,但如果您有100多条记录,您将如何进行操作?这对100个值很好,但我可能会将id/值对存储在一个表中,并使用联接进行更新。 id name code -------------


专门针对这种情况?我必须用不止一条sql语句来完成,对吗?如果你计算创建临时表并插入其中所需的语句,那么是的,你不能用一条语句来完成,但实际的更新是在一次快照中完成的。这很好,但是如果你有100多条记录,你会怎么做呢?这对100个值来说很好,但我可能会将id/值对存储在一个表中,并使用联接进行更新。这很好,但如果您有100多条记录,您将如何进行操作?这对100个值很好,但我可能会将id/值对存储在一个表中,并使用联接进行更新。
id     name     code
---------------------
1      n1       
2      n2     
3      n3 
id     name     code
---------------------
1      n1       code-1
2      n2       code-2
3      n3       code-3
update table t
    set code = concat('code-', id)
    where id in (1, 2, 3);
update table t
    set code = (case when id = 1 then 'code-1'
                     when id = 2 then 'code-2'
                     when id = 3 then 'code-3'
                end)
    where id in (1, 2, 3);
id       code
-------------
1       code-1
2       code-2
3       code-3
UPDATE original
SET code = temp.code
FROM original INNER JOIN temp
ON original.id = temp.id
  SELECT 1 AS rownum, 'code-1' AS code
  UNION ALL SELECT 2, 'code-2'
  UNION ALL SELECT 3, 'code-3'
  SELECT r.id
       , @rn := @rn + 1 AS rowumn
    FROM mytable r
   CROSS JOIN ( SELECT @rn := 0 ) i
   ORDER BY r.name, r.id
  SELECT t.id
       , t.name
       , t.code AS old_code
       , c.code AS new_code
       , o.rownum
    FROM ( SELECT 1 AS rownum, 'code-1' AS code
           UNION ALL SELECT 2, 'code-2'
           UNION ALL SELECT 3, 'code-3'
         ) c
    JOIN ( SELECT r.id
                , @rn := @rn + 1 AS rowumn
            FROM mytable r
            CROSS JOIN ( SELECT @rn := 0 ) i
            ORDER BY r.name, r.id
         ) o
      ON o.rownum = c.rownum
    JOIN mytable t
      ON t.id = o.id 
  UPDATE ( SELECT 1 AS rownum, 'code-1' AS code
           UNION ALL SELECT 2, 'code-2'
           UNION ALL SELECT 3, 'code-3'
         ) c
    JOIN ( SELECT r.id
                , @rn := @rn + 1 AS rowumn
            FROM mytable r
            CROSS JOIN ( SELECT @rn := 0 ) i
            ORDER BY r.name, r.id
         ) o
      ON o.rownum = c.rownum
    JOIN mytable t
      ON t.id = o.id 
     SET t.code = c.code
    FROM my_new_code_table c
       ( SELECT 21 AS rownum, 'code-21' AS code 
         UNION ALL SELECT 22, 'code-22'
         ... 
         UNION ALL SELECT 40, 'code-40'
       ) c
UPDATE `entry`
JOIN 
( *DEFINE QUERY FOR LOOKUPTABLE HERE* ) as alias
on alias.id=entry.valuetoreplace
SET `valuetoreplace` = alias.newvalue;