我有以下查询。
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来实现它。
答案 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