Сравните одно значение столбца между строкой № 1 и строкой № 2 - PullRequest
0 голосов
/ 07 июня 2018

Например, у меня есть следующая таблица basket.

basket fruit   quantity
1      mango   2
1      apple   2
2      banana  2
2      banana  3
2      banana  3

Теперь я должен найти корзины, которые имеют более 1 строки, и в корзине типы отличаются друг от друга.Таким образом, корзина № 1 должна выйти.

Я написал следующий SQL:

select count(*),c.basket from baskets c group by c.basket having count(*)>1;

Но после этого, как я могу получить корзины, где виды фруктов отличаются друг от друга средистроки?В этом случае это должна быть корзина № 1.

Ответы [ 3 ]

0 голосов
/ 07 июня 2018

Просто добавьте к предложению HAVING:

select count(*), c.basket 
  from baskets c 
 group by c.basket 
having count(*)>1 
   AND COUNT(DISTINCT fruit)>1;
0 голосов
/ 07 июня 2018

Я бы использовал exists:

select b.*
from baskets b
where exists (select 1 
              from baskets b1 
              where b1.basket = b.basket and 
                    b1.fruit <> b.fruit
            );
0 голосов
/ 07 июня 2018

Я бы использовал min() и max():

select b.basket
from baskets b
group by b.basket
where min(b.fruit) <> max(b.fruit);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...