2016-07-19 2 views
1

이것은 내 쿼리입니다.내 where 절이 원하는 것의 반대를 반환합니다.

select sp.name, spi.sku, sum(spi.price), count(sp.name), spi.in_stock, spi.price, sp.is_published, spi.is_reorderable 
from shop_product_category spc 
inner join shop_product_category_xref spcx 
on spc.shop_product_category_id = spcx.shop_product_category_id 
inner join shop_product sp 
on sp.shop_product_id = spcx.shop_product_id 
inner join shop_product_item spi 
on spi.shop_product_id = sp.shop_product_id 
inner join shop_order_item soi 
on spi.shop_product_item_id = soi.shop_product_item_id 
where (spc.shop_product_category_id in (1316)) 
and sp.is_published = 1 
group by sp.name 
order by count(sp.name) desc 

그것은 따라서 = where 절을 1 sp.is_published 어디 그 라인을 반환 할 경우를 제외하고 잘 모든 것을 반환합니다. 원하는 결과를 얻으려면 현재 where 절을 sp.is_published <> 1 으로 변경해야합니다. 질문은 다음과 같습니다. 왜 <> 1은 1로 행을 반환하고 = 1은 0으로 행을 반환합니다. 감사합니다

+1

mysql' 당신이 '때로 믿을 절 by'은'그룹에서 열을 생략 할 수 있습니다'때문에 당신은 아마 원하지 않는 행동을 받고 틱 t를'select' 절에 넣으십시오. 해당 필드를'group by' 절에 추가하고 문제가 해결되지 않는지 확인하십시오 ... – sgeddes

+0

아마 1이 문자열입니까? 너는 단 하나 진드기로 그것을 포위하는 시도 했는가? IE'sp.is_published = '1''? – Zak

+0

@sgeddes 방금 시도했지만 여전히 0을 반환하고 1이 아닙니다./아이디어를 가져 주셔서 감사합니다. – Bartonb12

답변

0

sp.is_published = 1이 문자열 인 경우, 당신은에 넣어해야합니다는 IE sp.is_published = '1'