0

假设我有一个表,其中包含 Apple 名称和另一列中的颜色。

Variety        Color
  Fuji          Red
  Fuji          Golden
  Granny Smith   Green
  Granny Smith   Red
  Gala           Red
  Gala           Golden
  Gala           Green

我想知道哪些苹果品种既有红色又有金色。所以我期待的答案是富士和嘎拉。那么我该如何编写查询。当然这个查询不起作用。

Select variety from table where Color like all ('Golden%','Red%')

我的表有很多列和一个与此类似的巨大表。

4

2 回答 2

1

我会这样写:

Select variety
from table
where Color in ('Golden', 'Red')
group by variety
having count(distinct color) = 2;

鉴于您的示例数据,我认为没有理由使用like通配符。

于 2018-04-11T18:59:59.803 回答
1

你可以使用INTERSECT

INTERSECT 运算符

仅返回两个查询结果中存在的行。

SELECT variety
FROM tab
WHERE color = 'Red'
INTERSECT
SELECT variety
FROM tab
WHERE color = 'Golden'
于 2018-04-11T19:00:29.230 回答