Кажется, что некоторые из B.PRODUCT_ID
, P.PRODUCT_ID
, B.USER_ID
и B.USER_ID
имеют значение SQL NULL, поэтому результат равен NULL.
«NULL» означает «неизвестно» в SQL.
Если вы проверяете две вещи на равенство, и одна из них неизвестна, результат неизвестен.
Если два условия должны быть истинными, но результат одного условия неизвестен,общий результат неизвестен.
Короче говоря, NULL является «заразным».
Может быть, это то, что вы хотите:
B.PRODUCT_ID IS NOT DISTINCT FROM P.PRODUCT_ID
AND B.USER_ID IS NOT DISTINCT FROM B.USER_ID
IS NOT DISTINCT FROM
похоже на =
, но обрабатывает NULL как нормальное значение.