UPDATE `ad_copy` AS `a`
LEFT JOIN (
SELECT `a`.`title`, (
SELECT `s`.`ttitle`
FROM `stitle` AS `s`
WHERE `a`.`category` = `s`.`subcat`
ORDER BY RAND()
LIMIT 1
) AS `ttitle`
FROM `ad_copy` AS `a`
) AS `s` USING(`title`)
SET `a`.`title` = CONCAT_WS(" - ", `a`.`title`, `s`.`ttitle`)
1. При каждом следующем запросе к ad_copy.title будет дописываться новое значение?
2. Если количество записей в каждой подкатегории небольшое, то ORDER BY RAND() не сильно скажется на производительности. Если большое - может оказаться, что лучше делать внешними средствами.