mysql - 获取没有请求的产品计数的查询
问题描述
我写了以下SQL,
SELECT COUNT(f.productid) AS count
FROM `product_list` `f`
LEFT JOIN `product_requests` `r`
ON `r`.`product_id` = `f`.`productid`
WHERE `f`.`product_cat` IN( 1, 4 )
AND `f`.`product_subcat` IN( '1', '2', '3', '4',
'5', '6', '7', '9',
'10', '11')
AND `r`.`product_id` IS NULL
我要做的是获取尚未针对特定产品类别和产品子类别提出产品请求的产品数量。
- product_list 表 - 产品列表
- product_requests 表 - 每个产品的请求列表
查询没有给出输出?它超时。
可能是什么问题?
解决方案
尝试这个:
SELECT COUNT (f.productid) AS COUNT
FROM (SELECT *
FROM `product_list` f where `f`.`product_cat` IN( 1, 4 )
AND `f`.`product_subcat` IN( '1', '2', '3', '4',
'5', '6', '7', '9',
'10', '11') ) `f`
LEFT JOIN `product_requests` `r`
ON `r`.`product_id` = `f`.`productid` AND `r`.`product_id` IS NULL
你的情况:
where
...
`r`.`product_id` IS NULL
需要在 ON 子句中,否则它会将你的左连接转换为内连接。有关详细信息,请参阅此链接。
此外,为了优化,请尝试在加入之前进行过滤。
推荐阅读
- atg - 为什么我在登录期间看到 concurrentUpdateException?
- ios - 如何在使用 Swift 单击 UITableview 单元格之前检查 SearchController 是否处于活动状态
- python - 如何比较两个数据框的列并在它们在 Python Pandas 中匹配时产生后果
- docker - 如何减少多阶段构建重复步骤时间成本问题?
- sql - 如何将小数点后的数字四舍五入
- wso2 - 如何在 WSO2 Micro Integrator 的数据服务中配置数据源?
- push-notification - 通过百度使用 Azure Notification Hub 向 Xamarin Android 应用发送通知
- reactjs - 在 React 和 Redux 中成功执行异步操作后,如何执行方法?
- javascript - 为什么不显示谷歌地图示例?
- javascript - 以 PHP-Variable 作为传输参数的 JavaScript 调用函数