我有一个包含许多表的数据库表。我想搜索这些表中的每一个,找到哪个有字符串,然后用另一个表替换它。
我想要的是如果我找到一个包含此字符串的字段,然后将其更新为另一个字符串
我尝试过这个非常丑陋的查询:
UPDATE `myTable`
SET
c1 = 'hello',
c2 = 'hello',
c3 = 'hello',
c4 = 'hello',
c5 = 'hello',
c6 = 'hello'
WHERE
c1 = 'hi',
c2 = 'hi',
c3 = 'hi',
c4 = 'hi',
c5 = 'hi',
c6 = 'hi'
但这显然是错误的,因为如果c1
为'hello'
,那么它不会仅将c1
更新为'hi'
,而是将所有字段更新为'hi'
答案 0 :(得分:3)
您想要条件更新:
UPDATE tbl
SET c1 = CASE WHEN c1='hi' THEN 'hello' else c1 end
,c2 = CASE WHEN c2='hi' THEN 'hello' else c2 end
-- and so on...
WHERE 'hi' IN (c1,c2,c3,c4,c5);