Обновление двух таблиц одним запросом в зависимости от результата присоединения третьей таблицы к MySQL

#mysql #sql #sql-update

#mysql #sql #sql-обновление

Вопрос:

Мне нужно обновить две таблицы одним запросом в зависимости от результата объединения с другой таблицей.

У меня есть tblPermutations, которые необходимо проверить по tblDictionary, и те, которые соответствуют, должны быть помечены как обработанные и вставлены в третий tblSpellathon.

Я безуспешно пробовал следующее.

 UPDATE tblspellathon AS s, 
(SELECT p.*
FROM tblpermutations p
INNER JOIN tbldictionary AS d ON d.Word = p.Permu AND p.`Language` = d.Lang
WHERE d.correct = -1 AND p.PermuProcessed = 0) AS p
SET p.PermuProcessed = -1, s.DerWord = p.Permu, s.WordListID = p.WordListID;
  

и

 UPDATE tblspellathon AS s, tblpermutations AS p, tbldictionary AS d
SET p.PermuProcessed = -1, s.DerWord = p.Permu, s.WordListID = p.WordListID
WHERE p.permu = d.Word AND p.`Language` = d.Lang AND d.correct = -1 AND 
p.PermuProcessed = 0;
  

По обоим вышеупомянутым запросам я получаю:

 SQL Error (1205): Lock wait timeout exceeded; try restarting transaction 
Affected rows: 0  Found rows: 0  Warnings: 0  Duration for 0 of 1 query: 0.000 sec.
  

Спасибо

Комментарии:

1. каков ключ соединения этой таблицы tblspellathon с другими?

2. Вам нужно условие объединения для tblspellathon , в противном случае он попытается установить каждую строку в таблице.

3. Вы уверены, что вам следует обновлять tblspellathon ? В тексте вопроса говорится, что его нужно вставить в него, а не обновлять.

4. вы не можете выполнить вставку и обновление в одном запросе.

5. @RaymondNijland Нет. Он хочет вставить в одну таблицу и обновить другую таблицу, а не вставить или обновить в той же таблице.