MySQL сравни два результата и покажи дельту - PullRequest
0 голосов
/ 07 сентября 2018

Итак, у меня есть таблица с именем «food», и в этой таблице у меня есть два столбца «groceryBag» и «item» следующим образом:

groceryBag    item
----------    -----
1             banana
1             eggs
2             ham
1             apple
1             chicken
2             apple
2             eggs

Моя цель - вернуть результаты, которые отличаются междусумка 1 и сумка 2. Итак, в моем примере выше результаты были бы:

groceryBag    item
----------    -----
1             banana
2             ham
1             chicken

изначально, я собирался подойти к этому с помощью python, проверив, есть ли каждый предмет в сумке 1 также в сумке 2, затем проверьте, находится ли каждый элемент в пакете 2 в пакете 1. Это занимает очень много времени, когда пакеты очень большие.Я также подумал о том, чтобы вывести результаты обоих запросов в два файла, а затем разложить их.Я надеялся, что был эффективный способ MySQL для сравнения двух результатов запроса и только показа дельт.Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 08 сентября 2018

что я искал было:

select * from (
select f.groceryBag, f.item as 1item from foo f where f.groceryBag = 1) 
as q1 where q1.1item no in ( 
select f.item from foo f where f.groceryBag = 2)        

Затем сделайте обратное, чтобы получить то, что находится в сумке 2, но не в сумке 1.

0 голосов
/ 07 сентября 2018

Подсчитайте количество строк для каждого элемента. Если предмет находится только в 1 ряду, то только в 1 сумке.

SELECT MAX(bag) AS bag, item
FROM foo
GROUP BY item
HAVING COUNT(*) = 1
...