MySQL:循环遍历一个表并更新另一个表?

时间:2010-11-07 09:55:25

标签: mysql sql sql-update

表t1:

s (string)      |  x (int)
----------------+--------
"gfrdgeradfg"   |  0
"abdfodpnmn"    |  0
...             |  ...

表t2:

c (varchar(1))
-----
"a"  
"c"  
"g"
"r"  
-----

我想为t1.s中出现的每个字符t2.c添加+1到t1.x,即结果应该是这样的:

s               |  x
----------------+--------
"gfrdgeradfg"   |  3      (contains "a","g","r")
"abdfodpnmn"    |  1      (contains "a")
...             |  ...

通过t2循环并在php中更新t1非常简单,但如果可能的话,我宁愿在纯SQL中执行此操作。

感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

UPDATE t1
SET x = (
    SELECT SUM(t1.s LIKE CONCAT('%', t2.c, '%'))
    FROM t2
)

澄清:表达式t1.s LIKE CONCAT('%', t2.c, '%')将计算为一个布尔值,该值相当于MySQL中的10

我没有测试过,所以请告诉我它是否无效。