我有做工精細的查詢,但它有2個相同的子查詢MySQL:如何使用兩個有意義的子查詢來優化查詢?
SELECT *,
(SELECT count(O.id) FROM `offer` O WHERE O.product_id = P.id) AS poffers
FROM `product` P
JOIN product_section PS ON (PS.product_id = P.id AND PS.section_id IN (14))
WHERE P.deleted is NULL
AND (SELECT count(O.id) FROM `offer` O WHERE O.product_id = P.id) > 0
我嘗試用JOIN優化,但新的查詢返回空結果
SELECT *, OJ.pcount AS poffers
FROM `product` P
JOIN product_section PS ON PS.product_id = P.id AND PS.section_id IN (14)
JOIN (SELECT count(O.id) AS pcount, O.product_id FROM `offer` O)
AS OJ ON OJ.product_id = P.id
WHERE P.deleted is NULL AND OJ.pcount > 0
比我嘗試變數,但我想我用錯了,查詢返回空結果
SELECT *,
@o := (SELECT count(O.id) FROM `offer` O WHERE O.product_id = P.id)
AS poffers
FROM `product` P
JOIN product_section PS ON (PS.product_id = P.id AND PS.section_id IN (14))
WHERE P.deleted is NULL
AND @o > 0
你有一些示例數據嗎?也許你可以在[sqlfiddle](http://sqlfiddle.com/)上設置一個小例子? – MvG 2012-07-26 16:19:04
如何添加一些數據? – deerua 2012-07-26 16:25:15
嘗試將GROUP BY product_id添加到您的1-st優化嘗試的子查詢中。 – Vatev 2012-07-26 16:26:48