Попробуйте это ...
SELECT table_b.*
FROM table_b
LEFT JOIN table_a
ON table_b.id = table_a.id
AND table_a.X = 3
WHERE table_a.item_id IS NULL
Нужно сделать свое дело ...
Но это немного странно, поскольку, вероятно, вернет больше, чем вам требуется.Этот запрос также вернет все строки из table_b, которые имеют результат в table_a, но где эти строки не имеют значения 'X', равного 3.
Если это не работает, попробуйте датьпример данных, которые вам нужно найти, и данных, которые вам не нужны, и мы можем попытаться помочь вам дальше!