数据库
首页 > 数据库> > MySQL:遍历一个表并更新另一个表?

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

作者:互联网

表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")
...             |  ...

在php中遍历t2和更新t1非常简单,但如果可能的话,我宁愿用纯SQL进行.

谢谢你的帮助.

解决方法:

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

澄清:表达式t1.s LIKE CONCAT(‘%’,t2.c,’%’)的计算结果为布尔值,在MySQL中等于1或0.

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

标签:sql-update,sql,mysql
来源: https://codeday.me/bug/20191105/1996996.html