結果を返さない 2 つのテーブルにまたがる SELECT クエリがあり、その理由がわかりません。これは、行を返さないクエリです。
SELECT b.name, b.description, b.badge_id
FROM badges AS b
WHERE b.type = 'have' AND b.brand_id = 'zTR7wH5FMl' AND ISNULL(b.series_id) AND b.amount <= 89
AND NOT EXISTS (SELECT date_earned
FROM users_badges AS ub
WHERE ub.user_id = 'fMcBBx' AND ub.badge_id = b.badge_id)
最後に AND NOT EXISTS 句を削除して、まだバッジを獲得していないことを確認すると、次の結果が返されます。
name description badge_id
Baker's Dozen Add 13 items to your Johnny Cupcakes shelf. sdfKHJkun7
Cupcaker Have 82 items on your Johnny Cupcakes shelf. 4MeoheBdik
Freshly Baked Have your first item on your Johnny Cupcakes shelf... kdJGH98NdI
これはまさに私が期待するものです。AND NOT EXISTS チェックが唯一の違いです。users_badges テーブルにはまだデータがないので、false を返す理由がわかりません。false を返すことはできないようです。クエリ全体が無効になるのはなぜですか?