Sql 比较第1行和第2行之间的一列值
例如,我有下面的桌子篮子Sql 比较第1行和第2行之间的一列值,sql,oracle,Sql,Oracle,例如,我有下面的桌子篮子 basket fruit quantity 1 mango 2 1 apple 2 2 banana 2 2 banana 3 2 banana 3 现在我要找到超过一排的篮子,篮子里的类型各不相同。所以一号篮应该出来了 我编写了以下SQL: select count(*),c.basket from baskets c group by c.basket having count(*)>1;
basket fruit quantity
1 mango 2
1 apple 2
2 banana 2
2 banana 3
2 banana 3
现在我要找到超过一排的篮子,篮子里的类型各不相同。所以一号篮应该出来了
我编写了以下SQL:
select count(*),c.basket from baskets c group by c.basket having count(*)>1;
但在这之后,我如何才能得到不同水果类型的篮子呢?在这种情况下,它应该是篮子编号1。我将使用最小值和最大值:
我将使用最小值和最大值:
只需在HAVING子句中添加以下内容:
只需在HAVING子句中添加以下内容:
我将使用:
我将使用:
仅供参考,你们不需要有过滤器的第一部分,当然,在一个人的篮子里有多个不同的水果意味着晒太阳的不仅仅是一件事。我试图在having子句中演示如何具有多个条件。仅供参考,您不需要having filterYes的第一部分,当然,在一个人的篮子中有多个不同的水果意味着晒太阳的不仅仅是一件事。我试图展示如何在having子句中包含多个条件。
select b.basket
from baskets b
group by b.basket
where min(b.fruit) <> max(b.fruit);
select count(*), c.basket
from baskets c
group by c.basket
having count(*)>1
AND COUNT(DISTINCT fruit)>1;
select b.*
from baskets b
where exists (select 1
from baskets b1
where b1.basket = b.basket and
b1.fruit <> b.fruit
);