В MySQL, как объединить отдельные столбцы из двух таблиц? - PullRequest
0 голосов
/ 11 октября 2018

Я хотел бы объединить значения из TableA и TableB, причем bundled_shipping_cost из TableA имеет приоритет.Значение shipping_cost в TableB следует использовать только в том случае, если его идентификатор не существует в TableA.

Есть ли рекомендуемый оператор соединения для этого?

TableA

id |bundled_shipping_cost |

1      |    100    |      
2      |    200    |      
3      |    300    |      
4      |    400    |    

TableB

id |shipping_cost |

1      |    95     |      
2      |    195    |      
5      |    50     |      
6      |    75     |    

TableC

id |final_shipping_cost |

1      |    100    |      
2      |    200    |    
3      |    300    |  
4      |    400    |    
5      |    50     |      
6      |    75     |    

Ответы [ 2 ]

0 голосов
/ 11 октября 2018
  • Вам необходим вид полного внешнего соединения.Используйте два разных Select запроса.
  • В первом запросе Select получите все строки из TableA.
  • Во втором запросе Select получить только те строки из TableB, которые не существуют в TableA, используя Left Join и Where TableA.id IS NULL.
  • В конце концов Union ALL их:

Попробуйте:

SELECT dt.id, 
       dt.final_shipping_cost 
FROM (
      SELECT t1.id, 
             t1.bundled_shipping_cost AS final_shipping_cost 
      FROM TableA AS t1 

      UNION ALL 

      SELECT t2.id, 
             t2.shipping_cost AS final_shipping_cost  
      FROM TableB AS t2 
      LEFT JOIN TableA AS t1 ON t1.id = t2.id 
      WHERE t1.id IS NULL 
    ) AS dt 
ORDER BY dt.id 
0 голосов
/ 11 октября 2018

Попробуйте этот запрос:

select q.*from(SELECT *
    FROM `t1`
    union select * from t2) as q group by id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...