Как составить Update по данным Select по условию из другой таблицы?

Есть таблица 1, из которой получаем выборку :
SELECT a.region,a.host 
FROM ftpup a
 , ( SELECT info,type,timestamp, max(date) as time FROM ftpup GROUP BY type ) b 
WHERE a.type = b.type AND a.date = b.time AND a.status <> '0' ORDER BY a.`date` DESC

Результат выборки:
region --- host
SB --- H1
BS --- H2
PT --- H2

Есть таблица 2, со структурой:
host --- region --- status
H1 --- SB --- 1
H2 --- PT --- 0
H2 --- BS --- 1

Как составить update для таблицы 2 и установить status='2' где host = host из первого select (результат из таблицы 1) и region=region из первого select (результат из таблицы 1)?
  • Вопрос задан
  • 593 просмотра
Решения вопроса 1
Dimkaa
@Dimkaa Автор вопроса
Да чуть ранее слепил уже . У тебя аналогичная логика получилась.

UPDATE table2
INNER JOIN (SELECT a.region,a.host 
FROM ftpup a
 , ( SELECT info,type,timestamp, max(date) as time FROM ftpup GROUP BY type ) b 
WHERE a.type = b.type AND a.date = b.time AND a.status <> '0' ORDER BY a.`date` DESC) AS table1
ON (table2.hostname = table1.host AND table2.region = table1.region)
SET table2.status=2
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
idShura
@idShura
Не уверен, но попробуй так (пробуй на тестовых данных):
UPDATE my_tab2 as t2 
  JOIN (SELECT a.region,
               a.host 
          FROM ftpup a, 
               (SELECT info, 
         	           type, 
         	           timestamp, 
         	           max(date) as time 
         	      FROM ftpup 
              GROUP BY type ) b 
        WHERE a.type = b.type 
          AND a.date = b.time 
          AND a.status <> '0' ) AS t1 ON t1.host = t2.host and t1.region = t2.host
   SET t2.status = '2'
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы