查询数据库中的更新记录

anhgbhbe  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(481)

目前我们所有的table都有 created_at 以及 updated_at 时间戳,例如。

Cart

| ID | created_at | updated_at | user_id |
|----|------------|------------|---------|
| 1  | 2020-06-15 | 2020-06-15 | 6       |
| 2  | 2020-06-16 | 2020-06-16 | 7       |

CartItem

| ID | created_at | updated_at | qty     | cart_id |
|----|------------|------------|---------|---------|
| 3  | 2020-06-15 | 2020-06-16 | 2       | 1       |
| 4  | 2020-06-16 | 2020-06-18 | 1       | 1       |
| 5  | 2020-06-16 | 2020-06-18 | 6       | 2       |

User

| ID | created_at | updated_at | name                      |
|----|------------|------------|---------------------------|
| 6  | 2020-05-01 | 2020-06-19 | Lance                     |
| 7  | 2020-05-01 | 2020-05-01 | Barry (from Eastenders)   |

这个 updated_at 每次插入都会修改字段。
这允许我们查询所有 Cart 从某个特定时间点开始更新的:

SELECT * FROM Cart WHERE updated_at > 2020-06-15

但是,这不会捕获fk关系的更新,例如 CartItems s和 User s。
有没有一个好的方法来处理这件事让我们 Cart 直接或间接(通过fk关系)更新的?

4ioopgfo

4ioopgfo1#

你可以用 exists :

select c.*
from cart c
where c.updated_at > '2020-06-16' or
      exists (select 1 from cartitem ci where ci.cart_id = c.cart_id and ci.updated_at > '2020-06-16') or
      exists (select 1 from user u where u.user_id = c.user_id and u.updated_at > '2020-06-16') ;

相关问题