表 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, '%')
的计算结果将是 bool 值,相当于 1
或0
在 MySQL 中。
我没有测试它,如果它不起作用请告诉我。
关于MySQL:遍历一个表并更新另一个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4117234/