mysql - 左连接两个表,如果两个表中都存在值,则保留右表中的最新值
问题描述
我试图离开加入两张桌子。这部分很简单。
我有两个表: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 表的描述。
如果我使用左连接,右表中的所有内容都将加到左表中,并且一个产品会有多个描述。
我应该如何编写查询。
解决方案
你可以使用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 = ?
推荐阅读
- reactjs - 如何明智地显示尺寸颜色?
- cakephp - headermap 缓存卡住了?
- wordpress - 从 WooCommerce 网站向 Flutter 应用程序推送通知
- c++ - 想要获得具有进程 ID 的窗口句柄?
- react-native - KeyboardAvoidingView 创建一个永久偏移量,我无法滚动到之后
- python - 分类数据
- ios - OpenCV:如何将图像垂直拼接成长图像而不是全景图/水平
- reactjs - REACTJS - 想一次播放 20 个视频,悬停时没有缓冲
- c++ - qt中设置setWidgetResizable为true后,滚动区自定义小部件无法上下滚动
- rpc - 孟买的随机错误:MetaMask - RPC 错误:非 200 状态代码:“404”