Я хочу UNION таблиц с одинаковыми столбцами, например:MySQL UNION таблицы по одной уникальной области
table1
id var1 var2
1 green red
2 blue NULL
table2
id var1 var2
2 NULL pink
3 red blue
Мой результат должен выглядеть так:
id var1 var2
1 green red
2 blue pink
3 red blue
А «нормальный» UNION создает следующий результат:
id var1 var2
1 green red
2 blue NULL
2 NULL pink
3 red blue
... с двумя идентификаторами = 2 ввода, поскольку две строки с id = 2 не идентичны. Тем не менее, я хотел бы иметь только один единственный ряд с идентификатором 2.
Мой текущий обходной путь выглядит следующим образом:
Шаг 1
CREATE OR REPLACE VIEW temp AS
SELECT id FROM table1
UNION
SELECT id FROM table2;
Шаг 2
SELECT t1.id, IFNULL(t2.var1, t3.var1) AS var1, IFNULL(t2.var2, t3.var2) AS var2
FROM temp AS t1
LEFT JOIN table1 AS t2 ON t1.id = t2.id
LEFT JOIN table2 AS t3 ON t1.id = t3.id;
Я не могу поверить, что это самый умный способ решить проблему, так как это такое обычное о северо-восток И это настоящая боль в шее, когда число таблиц или переменных увеличивается.
Спасибо за любую умную идею!
Спасибо большое! К сожалению, это решение не объединяет поля. id 2 имеет только информацию, указанную в таблице 1. –