Вы по-прежнему видите результат, даже если StatusID = 2 существует, потому что вы используете LEFT JOIN
, который, как вы помните, возвращает весь левый набор и все соответствующие записи из правого набора или NULL, где их нет существовать.
Мне кажется, самое простое решение - просто использовать INNER JOIN
, поскольку для случаев LEFT JOIN
вернет, что INNER JOIN
не будет, StatusID не будет равен ни 1, ни 2.
Таким образом:
select * from records a
inner join records b
on b.storeid = a.storeid
where a.statusid = 1
and b.statusid <> 2