首页 > 解决方案 > 左连接两个表,如果两个表中都存在值,则保留右表中的最新值

问题描述

我试图离开加入两张桌子。这部分很简单。

我有两个表:product 和 productupdate

产品表看起来像这样

id | productname | description 

productupdate 表如下所示

id | productname | descriptionupdate 

我过度简化了这个例子。还有更多的列,而不仅仅是那些。

SELECT productname, description 
FROM product 
LEFT JOIN productupdate ON 
product.id =  productupdate.id WHERE id = ?

我想要实现的是加入两个表,如果右表(productupdate)中存在描述更新,则只保留来自 productupdate 的 descriptionupdate,并且不应该保留来自 product 表的描述。

如果我使用左连接,右表中的所有内容都将加到左表中,并且一个产品会有多个描述。

我应该如何编写查询。

标签: mysql

解决方案


你可以使用COALESCE

SELECT p.productname, COALESCE(pu.descriptionupdate, p.description) AS desciption
FROM product p
LEFT JOIN productupdate pu ON p.id =  pu.id 
WHERE p.id = ?

推荐阅读