2012-03-28 2 views
0

У меня есть две различные таблицыMYSQL: Самый простой способ для обновления полей между 2 таблицами

в первый один (t1) меня

Table [t1] 
id  Product_URL 

.

Table [t2] 
id  Product_id Product_URL 

Я хотел бы UPDATE ALL PRODUCT_ID поле (от t2) к идентификатору первого

WHERE t1.product_url = t2.product_url 

я могу сделать это в одном запросе?

ответ

1
UPDATE t2 
JOIN (
    SELECT t2_2.id, t1.id as new_id 
    FROM 
     t2 t2_2 JOIN 
     t1 ON t2_2.product_url = t1.product_url AND t2_2.product_id <> t1.id 
    ORDER BY t2_2.id 
    LIMIT 5000 
) sub ON t2.id = sub.id 
SET id = sub.new_id; 

EDIT: It looks like mutli-table updates do not play well with LIMIT and ORDER BY, но вот еще один запрос, который выполняет то же самое ...

+0

круто, спасибо. Что делать, если слишком много строк? и мне пришлось бы разделить на несколько примеров на куски на 5000, где doI положил LIMIT? –

+0

@DS_web_developer См. Мои изменения ... новые ответы на обновления в партиях 5000 ... –

+0

nope, порядок и ограничение не разрешены там –

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