我写了以下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
我想做的是获取未针对特定产品类别和产品子类别提出产品请求的产品计数。
查询没有输出?超时了。
可能是什么问题?
答案 0 :(得分:1)
尝试一下:
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子句中,否则它将把您的左联接转换为内部联接。有关更多详细信息,请see this link。
此外,为了进行优化,请尝试过滤加入之前。