Как объединить 2 таблицы так чтобы одна перекрыла часть другой?

Есть две таблицы с одинаковой структурой - 2 столбца: 'id' и 'activity'. Значения полей 'id' уникальны. В первой таблице перечислены все возможные id (во второй таблице не может быть id, которого нет в первой таблице). Значения всех полей 'activity' в первой таблице содержат 0. Вторая таблица содержит не больше строк, чем первая, а в полях 'activity' второй таблицы содержатся какие-то числа, отличные от нуля. Необходимо так объединить эти две таблицы, чтобы перекрыть часть первой таблицы второй таблицей, так чтобы в получившейся таблице было столько же строк, сколько и в первой таблице, а для тех строк, чей id присутствует во второй таблице поле 'activity' содержало значение из второй таблицы.

Пример
Первая таблица:
id         activity
1          0
2          0
3          0
4          0

Вторая таблица:
id         activity
2          17
4          45

Результат:
id         activity
1          0
2          17
3          0
4          45
  • Вопрос задан
  • 187 просмотров
Пригласить эксперта
Ответы на вопрос 4
qonand
@qonand
Software Engineer
SELECT 
    table1.id, 
    IFNULL(table2.activity, table1activity) as activity
FROM table1
LEFT JOIN table2 ON table1.id = table2.id
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
LEFT JOIN + IFNULL
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега MySQL
{PHP, MySql, HTML, JS, CSS} developer
UPDATE T1
SET t1.activity = t2.activity
FROM table1 T1
INNER JOIN table2 T2
 on t1.id = t2.id

Если не путаю к ночи, кажись так.
Ответ написан
Комментировать
@dmitryKovalskiy
программист средней руки
SELECT id, CASE   WHEN t1.activity = 0 THEN t2.activity ELSE t1.activity END as activity 
FROM t1
LEFT JOIN t2 ON t1.id = t2.id

Однако следует понимать что если в t1 будет 0 , а t2 отсутствует - то в выдаче будет NULL, но это решаемо.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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