【问题标题】:MySQL compare two results and show deltaMySQL比较两个结果并显示增量
【发布时间】:2018-09-06 23:40:27
【问题描述】:

所以我有一个名为“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 方法来比较两个查询结果并只显示增量。任何帮助将不胜感激。

【问题讨论】:

    标签: mysql sorting delta


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我正在寻找的是:

      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 里的东西。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-30
        • 1970-01-01
        • 2013-11-20
        相关资源
        最近更新 更多