2016-03-29 2 views
1

Я вставляю в TableA с помощью Select/Inner Join из TableB и TableC.Обновление таблицы после вставки записей с помощью Inner Join

Insert into TableA (C,S,M,C100) 
SELECT C,S,M,group_concat(CID) FROM TableB 
INNER JOIN TableC 
ON TableB.CID= TableC.CID and P>=100 group by C,S,M 

Теперь мне нужно обновить эти записи двумя способами. Один идентичен первому, но теперь я хочу, чтобы обновить другое поле с P < 100, по существу:

Insert into TableA (C,S,M,C0) 
SELECT C,S,M,group_concat(CID) FROM TableB 
INNER JOIN TableC 
ON TableB.CID= TableC.CID and P<100 group by C,S,M 

Только я не хочу новых записей Я хочу, чтобы обновить где TableA C, S, M матч

Второе, что я хочу сделать, это похоже, но включает в себя обновление из другой таблицы, но почти идентичным образом

Insert into TableA (C,S,M,C100) 
SELECT C,S,M,group_concat(CID) FROM TableD 
INNER JOIN TableE 
ON TableD.CID= TableD.CID and P>=100 group by C,S,M 

другими словами, я мог бы создать каждый проход в виде отдельных вставок, но будет в конечном итоге с дублирующие записи C, S, M.

Есть ли способ сделать проходы после первой вставки в качестве обновлений ИЛИ есть ли способ сделать их каждый как вставки, а затем объединить записи, где C, S, M идентичны?

ответ

0

Используйте обновление с присоединиться:

UPDATE TableA 
join (select C,S,M,group_concat(CID) as newCol 
     FROM TableB 
     where P<100 
     group by C,S,M) t 
ON (tableA.c = t.c and tableA.s = t.s and TableA.M = t.m) 
SET <YourColumn> = t.newCol 
+0

Спасибо. Это может показаться глупым вопросом, но я не смог заставить его работать (новый для присоединения); предположим, что мне больше не нужно присоединяться к B к C, я просто хочу обновить TableA с помощью поля TableB, group_concat с теми же условиями и группой ON. Я пробовал и терпел неудачу, поэтому что-то об этом не имеет смысла для меня (пока), разъяснение о том, как обновить, будет оценено по достоинству. – user3649739

+0

Без проблем @ user3649739. Если бы вы отправили свою попытку, я мог бы сказать вам, что вы поступили не так, так или иначе, я обновил ответ – sagi

Смежные вопросы