私のアプリケーションでバグが見つかりました。結果が表示されませんでした。私はそれを次のSQLクエリに戻しました(無関係な部分を削除しました)。MySQLサブクエリの比較結果が正しくありません
クエリは、対応するIDのはwc_hncat_product_category_has_product
テーブル内の> = 1の数を持っているのwc_hncat_products
から行を選択して見ることができるように、私は列とサブクエリの結果でクエリを実行する場合
、あなたが見ることができます結果は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行が選択されます。 。
これはどのように可能ですか?実際にカウントが1であることがわかりますが、両方のシナリオでサブクエリが同一である間に結果が返されないため、比較はまだ失敗します。
私はそれらの小さな画像のテキストを読むことができません。 – jarlh
あなたの質問を編集して、質問の質問を*テキスト*としてください。あなたは、これが良い考えであることを知っておくべき十分な経験をサイトに持っています。 –
質問を更新してコードブロックを追加しました。 – Boyd