表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中执行此操作。
感谢您的帮助。
答案 0 :(得分:4)
UPDATE t1
SET x = (
SELECT SUM(t1.s LIKE CONCAT('%', t2.c, '%'))
FROM t2
)
澄清:表达式t1.s LIKE CONCAT('%', t2.c, '%')
将计算为一个布尔值,该值相当于MySQL中的1
或0
。
我没有测试过,所以请告诉我它是否无效。