mysql比较两个结果并显示delta

ikfrs5lh  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(436)

所以我有一个名为“food”的表,在这个表中有两列“grocerybag”和“item”,如下所示:

  1. groceryBag item
  2. ---------- -----
  3. 1 banana
  4. 1 eggs
  5. 2 ham
  6. 1 apple
  7. 1 chicken
  8. 2 apple
  9. 2 eggs

我的目标是返回包1和包2之间不同的结果。在我上面的例子中,结果是:

  1. groceryBag item
  2. ---------- -----
  3. 1 banana
  4. 2 ham
  5. 1 chicken

最初,我打算用python检查包1中的每个项目是否也在包2中,然后检查包2中的每个项目是否在包1中。当袋子非常大时,这就变得非常耗时。我还考虑将两个查询结果输出到两个文件中,然后对它们进行区分。我希望有一个eligant mysql方法来比较两个查询结果,并且只显示delta。任何帮助都将不胜感激。

vu8f3i0k

vu8f3i0k1#

计算每个项目的行数。如果一件物品只有一排,那么它只有一个袋子。

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

qlzsbp2j2#

我想要的是:

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

然后按相反的步骤得到袋子2中的东西,而不是袋子1中的东西。

相关问题