gpt4 book ai didi

php - MySQL - 在一对多关系中选择不匹配的数据

转载 作者:行者123 更新时间:2023-12-01 00:32:47 25 4
gpt4 key购买 nike

首先,这个问题是关于PHP和MySQL的

我有两个数据库表:

People 表:

person_id   |   field_1  |  field_2  |  other_fields... 

还有注释表:

note_id   |  person_id  |  created_timestamp  |  other_fields... 

People 表与 Notes 表具有一对多关系...
每次在 Notes 表中创建一条笔记时,都会附加一个时间戳,同时分配一个 person_id 外键。

现在……
我需要找到所有在过去 30 天内没有收到过针对他们的note
我现在的做法是:

  1. Notes 表中获取所有具有不同 person_idcreated_timestamp 的笔记 > 'time(31*86400)' (不准确..我知道,但适合我的需要)
  2. 遍历结果并将 person_id 添加到临时数组 $temp
  3. People 表中获取所有记录
  4. 遍历每条记录并对 person_id$temp 进行 in_array() 比较

当有很多 PeopleNotes 时,这不是很有效并且会削弱应用程序。

有没有人对此有更好的解决方案。理想情况下,仅使用一个 SQL 查询即可实现。

感谢观看

最佳答案

SELECT person_id FROM People WHERE person_id NOT IN 
(SELECT person_id FROM Note
WHERE created_timestamp > DATE_SUB(CURDATE(), INTERVAL 30 DAY))

这里假定 create_timestamp 的类型为“DATE”、“TIMESTAMP”或“DATETIME”。如果您在此处使用 unix 时间戳,请使用 FROM_UNIXTIME(created_timestamp)

将其转换为 MySQL 时间戳

关于php - MySQL - 在一对多关系中选择不匹配的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3719628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com