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

标签 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")
...             |  ...

在 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 值,相当于 10 在 MySQL 中。

我没有测试它,如果它不起作用请告诉我。

关于MySQL:遍历一个表并更新另一个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4117234/

相关文章:

mysql - 是否可以在一个查询中更新同一列中的 2 个字段(mysql)

php sql值为空重定向

mysql - 在 solrconfig.xml 中设置 <autocommit> 需要什么

sql - 为什么嵌套循环逻辑不能按预期工作

sql - 取消透视从另一个表中获取的列

sql - PostgreSQL 8.2 : Require specific column to be present in UPDATE statement

c# - 使用 Inner Join 的 MySqlDataAdapter 更新表

mysql - MySQL 中何时使用单引号、双引号和反引号

mysql - SELECT 语句将值加在一起而不是单独显示

sql - 修改xquery中的sql server xml元素名称变量