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;