MYSQL不等于问题

时间:2015-01-29 13:41:50

标签: mysql

我有以下查询。

SELECT product_id, value
FROM products_vals
HAVING value <> 'london' 
ORDER BY product_id

下面是表products_vals

product_id   value
29778        London
29778        England
29778        Mayfair
29778        Earls Shop
29779        Birmingham
29779        England
29779        St Kings
29779        Johns Shop

但是当我使用我的查询时,它总是返回(下面)。

29778   England
29778   Mayfair
29778   Earls Shop
29779   Birmingham
29779   England
29779   St Kings
29779   Johns Shop

正如你所看到的,它唯一删除的是伦敦行,我想要实现的是删除伦敦行共享的所有product_id,这样我的查询就会如此。

29779   Birmingham
29779   England
29779   St Kings
29779   Johns Shop

谢谢。

编辑::有人可以建议使用具有聚合函数的caluse来实现它。

1 个答案:

答案 0 :(得分:3)

SELECT product_id, value
FROM products_vals
where product_id not in (select product_id from products_vals where value='london')
ORDER BY product_id

编辑:

不完全确定您在寻找什么,但如果您的意思是希望能够消除多个城市并且正在这样做:

SELECT product_id, value
FROM products_vals
where product_id not in (select product_id from products_vals where value='london')
and  product_id not in (select product_id from products_vals where value='gloucester')

ORDER BY product_id

然后你可以这样做:

SELECT product_id, value
FROM products_vals
where product_id not in (select product_id from products_vals where value in ('london','gloucester'))
ORDER BY product_id