Teradata sql 两个条件(和)来检查多行以确定有效性
Teradata sql two conditions(and) to check multiple rows to determine validity
假设我有一个 table 苹果名称和颜色在另一个列中。
Variety Color
Fuji Red
Fuji Golden
Granny Smith Green
Granny Smith Red
Gala Red
Gala Golden
Gala Green
我想知道哪些苹果品种同时具有红色和Golden.So我期待的答案是富士和加拉。那么我该如何编写查询。当然这个查询不起作用。
Select variety from table where Color like all ('Golden%','Red%')
我的 table 有很多专栏和一个巨大的 table 与此类似。
我会这样写:
Select variety
from table
where Color in ('Golden', 'Red')
group by variety
having count(distinct color) = 2;
鉴于您的示例数据,我认为没有理由使用 like
和通配符。
您可以使用 INTERSECT
:
INTERSECT Operator
Returns only the rows that exist in the result of both queries.
SELECT variety
FROM tab
WHERE color = 'Red'
INTERSECT
SELECT variety
FROM tab
WHERE color = 'Golden'
假设我有一个 table 苹果名称和颜色在另一个列中。
Variety Color
Fuji Red
Fuji Golden
Granny Smith Green
Granny Smith Red
Gala Red
Gala Golden
Gala Green
我想知道哪些苹果品种同时具有红色和Golden.So我期待的答案是富士和加拉。那么我该如何编写查询。当然这个查询不起作用。
Select variety from table where Color like all ('Golden%','Red%')
我的 table 有很多专栏和一个巨大的 table 与此类似。
我会这样写:
Select variety
from table
where Color in ('Golden', 'Red')
group by variety
having count(distinct color) = 2;
鉴于您的示例数据,我认为没有理由使用 like
和通配符。
您可以使用 INTERSECT
:
INTERSECT Operator
Returns only the rows that exist in the result of both queries.
SELECT variety
FROM tab
WHERE color = 'Red'
INTERSECT
SELECT variety
FROM tab
WHERE color = 'Golden'