所以我在我的應用程序中發現了一個錯誤,它沒有向我顯示它應該有的結果。我將其追溯到以下SQL查詢(我刪除了不相關的部分)。錯誤的MySQL子查詢計數比較結果
正如你可以看到該查詢從wc_hncat_products
其中的相應的ID具有wc_hncat_product_category_has_product
表裏面> = 1的計數選擇行
如果我執行與該子查詢結果作爲列的查詢時,可以看到結果是1
。但是,當我在WHERE子句中使用它時,>= 1
比較失敗。
SELECT `wc_hncat_products`.`id`,
(SELECT Count(*)
FROM `wc_hncat_product_categories`
INNER JOIN `wc_hncat_product_category_has_product`
ON `wc_hncat_product_categories`.`id` =
`wc_hncat_product_category_has_product`.`category_id`
WHERE `wc_hncat_product_category_has_product`.`product_id` =
`wc_hncat_products`.`id`
AND `category_id` IN ('1')) count
FROM `wc_hncat_products`
WHERE `id` IN ('785')
該查詢返回一行,列count
值爲1
SELECT `wc_hncat_products`.`id`
FROM `wc_hncat_products`
WHERE (SELECT Count(*)
FROM `wc_hncat_product_categories`
INNER JOIN `wc_hncat_product_category_has_product`
ON `wc_hncat_product_categories`.`id` =
`wc_hncat_product_category_has_product`.`category_id`
WHERE `wc_hncat_product_category_has_product`.`product_id` =
`wc_hncat_products`.`id`
AND `category_id` IN ('1')) >= 1
AND `id` IN ('785')
該查詢選擇0行。 。
這怎麼可能?您可以看到count實際上是1,但比較仍然失敗,因爲在兩種情況下子查詢都是相同的,但沒有返回結果。
我看不懂那些小圖片的文本。 – jarlh
編輯您的問題並將問題中的查詢作爲*文本*進行過濾。你在網站上有足夠的經驗,你應該知道這是一個好主意。 –
我更新了問題以包含代碼塊。 – Boyd