MySQL: перебрать одну таблицу и обновить другую? - PullRequest
3 голосов
/ 07 ноября 2010

Таблица t1:

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

Таблица t2:

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

Я хотел бы добавить +1 к t1.x для каждого символа t2.c, который встречается в t1.sто есть результат должен выглядеть примерно так:

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

Цикл через t2 и обновление t1 в php довольно просто, но я бы предпочел сделать это на чистом SQL, если это возможно.

Спасибо за вашу помощь.

1 Ответ

4 голосов
/ 07 ноября 2010
UPDATE t1
SET x = (
    SELECT SUM(t1.s LIKE CONCAT('%', t2.c, '%'))
    FROM t2
)

Пояснение: выражение t1.s LIKE CONCAT('%', t2.c, '%') будет вычислено как логическое значение, эквивалентное 1 или 0 в MySQL.

Я не тестировал его, поэтому, пожалуйста, скажите мне, если он не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...