我有一个表t1如下

 -----------------------------
 |    date   |  id   | value |
 -----------------------------
 | 2/28/2019 |  1    | abc1  |
 | 2/28/2019 |  2    | abc2  |
 | 2/28/2019 |  3    | abc3  |
 | 2/27/2019 |  1    | abc4  |
 | 2/27/2019 | 2     | abc5  |
 | 2/27/2019 | 3     | abc3  |
 -----------------------------


我想从abc3中获取t1,然后在同一表abc3中找到date - 1天的t1值,并显示两条记录。

在这种情况下,它将是2条记录:

-------------------------------
| date      | id   |  value   |
-------------------------------
| 2/28/2019 |  3   |  abc3    |
| 2/27/2019 |  3   |  abc3    |
-------------------------------


如何实现呢?
谢谢。

最佳答案

这是你想要的吗?

select t.*
from t
where value = 'abc3'
order by date desc
limit 2;


还是因为连续两天的值相同而要查找abc3

select t.*
from t
where value = 'abc3' and
      exists (select 1
              from tablename t2
              where t2.value = t.value and
                    t2.date in (t.date - interval 1 day, t.date + interval 1 day)
             );

关于mysql - SQL-与自身连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55753860/

10-10 19:23