artem328
@artem328

Как совместить данные двух колонок в одну mysql?

Добрый день.

Есть ли способ сделать соединение двух колонок с заменой mysql при запросе? К примеру
Есть две таблицы
table_1
-----------
id 	| index
-----------
1   | 3
2   | 5
3   | 6
4   | 0
5   | 2

table_2
-----------
id  | index
-----------
1   | 1
5   | 7


Я делаю запрос к таблице
SELECT t1.`id`, t1.`index` AS t1_index, t2.`index` AS t2_index 
	FROM table_1 t1 
	LEFT JOIN table_2 t2 ON(t1.`id` = t2.`id`)


и получаю результат
id 	| t1_index | t2_index
-------------------------
1   | 3        | 1
2   | 5        | NULL
3   | 6        | NULL
4   | 0        | NULL
5   | 2        | 7


Как мне можно получить следующий результат
id 	| index
-----------
1   | 1    
2   | 5    
3   | 6    
4   | 0    
5   | 7

Т.е если t2_index != NULL его записать в index, а если t2_index == NULL , то t1_index записать в index

Спасибо
  • Вопрос задан
  • 3818 просмотров
Решения вопроса 1
egor_nullptr
@egor_nullptr
SELECT t1.`id`, COALESCE(t2.`index`, t1.`index`) as 'index'
FROM table_1 t1
LEFT JOIN table_2 t2 ON(t1.`id` = t2.`id`);
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
IgorO2
@IgorO2
73
SELECT tt.* FROM (SELECT id, index FROM  table_2 UNION  SELECT id, index FROM  table_1) tt GROUP BY tt.id
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT `t1`.`id`, IFNULL(`t2`.`index`, `t1`.`index`)
  FROM `table_1` AS `t1` 
  LEFT JOIN `table_2` AS `t2` USING(`id`)
Ответ написан
Комментировать
Immortal_pony
@Immortal_pony Куратор тега MySQL
SELECT 
    t1.`id`, 
    CASE 
        WHEN (t2.`index` IS NOT NULL) THEN
            t2.`index` 
        ELSE
            t1.`index`
    END AS 'index'
FROM 
    table_1 t1 LEFT JOIN 
    table_2 t2 ON (t1.`id` = t2.`id`)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы