首页 > 解决方案 > SQL - 与自身连接

问题描述

我有一张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  |
 -----------------------------

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

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

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

如何做到这一点?谢谢。

标签: mysqlsql

解决方案


您可以使用 EXISTS:

select t.* 
from tablename t
where
  value = 'abc3'
  and 
  exists (
    select 1 from tablename
    where value = 'abc3' and date in (t.date - INTERVAL 1 DAY, t.date + INTERVAL 1 DAY) 
  )

请参阅演示


推荐阅读