mysql - SQL - 比较一张表中的数据

标签 mysql sql

我无法找到一种方法来比较一个表(表 1)中的数据。

表1的部分内容

Date        ID        Item        
----        -------   -----
2017-06-30  90        2200
2017-06-30  150       1200
2017-06-30  150       1201
2017-06-30  150       1202 
2017-06-30  150       1203 
2017-06-30  150       1204
2017-07-31  150       1201
2017-07-31  150       1202
2017-07-31  150       1203
2017-07-31  150       1204
2017-07-31  150       1205
2017-07-31  90        2200

我想要得到的结果是 1205,因为这是下个月的新项目。如果我能得到下个月不再有的元素,即 1200,那就太好了

** 编辑:我应该提到的一件事是 Table1 在 ID 列中也有不同的 ID。所以主要目标是比较精确的 ID=150(而不是 160 或 180)。 **

如果有任何建议,我将不胜感激。

谢谢

最佳答案

例如:

SELECT x.* 
  FROM my_table x 
  LEFT 
  JOIN my_table y 
    ON y.id = x.id 
   AND y.date = '2017-06-30' 
   AND y.item = x.item 
 WHERE x.date = '2017-07-31' 
   AND y.id IS NULL;

SELECT x.* 
  FROM my_table x 
  LEFT 
  JOIN my_table y  
    ON y.id = x.id AND y.date = x.date - INTERVAL 1 MONTH 
   AND y.item = x.item 
 WHERE x.date = '2017-07-31' 
   AND y.id IS NULL;

我本想把剩下的部分留给读者作为练习,但我发现我的计划已经泡汤了。

关于mysql - SQL - 比较一张表中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45794203/

相关文章:

MySQL 新。 AFTER INSERT 触发器中的值为空

php - 点击计数、限制和禁用

sql - 如何在递归表(SQL)中获取 2 行的最低公共(public)父级

sql - 从不完整的数据返回结果?

Jquery ui - 自动完成 - UTF8 字符集

sql - 不嵌套不同维度的数组

mysql - 中间表设计

php - 有什么可以帮助我创建可排序的表(带有搜索过滤器)吗?

如果另一个表中的值为空,MySQL 返回结果

mysql - 如何选择不同 col1 和空 col2 的行