gpt4 book ai didi

mysql - SQL 返回父表中的所有行,其中条件与子表的另一个子表匹配

转载 作者:行者123 更新时间:2023-11-29 04:42:34 25 4
gpt4 key购买 nike

我有 3 个表:

文档组

  • 编号
  • 姓名

文档类型

  • 编号
  • doc_group_id
  • 姓名

文档

  • 编号
  • doc_type_id
  • 姓名
  • 日期

我只想从 Doc_group 中检索其所有文档的日期均小于 90 天的行。

例子:文档组

+-----------------+| id | name       |+-----------------+| 1 | doc_group_1 |+-----------------+| 2 | doc_group_2 |+-----------------+| 3 | doc_group_3 |+-----------------+

文档类型

+--------------------------------+| id| name        | doc_group_id | +--------------------------------+| 1 | doc_type_1  | 1            |+--------------------------------+| 2 | doc_type_2  | 1            |+--------------------------------+| 3 | doc_type_2  | 2            |+--------------------------------+

文档:

+---------------------------------------+| id| name   | doc_type_id  | date      |+---------------------------------------+| 1 | doc_1  | 1            |01/10/2012 |+---------------------------------------+| 2 | doc_2  | 2            |01/9/2012  |+---------------------------------------+| 3 | doc_3  | 3            |01/10/2012 |+---------------------------------------+| 4 | doc_4  | 3            |26/07/2014 |+---------------------------------------+

结果:只应返回 doc_group_1,因为它的所有文档都少于 90 天。doc_group_2 不符合条件,因为 doc_4 不少于 90 天文档组

+-----------------+| id | name       |+-----------------+| 1 | doc_group_1 |+-----------------+

我尝试了 group by,但我得不到我想要的结果。

谢谢

最佳答案

这是您要查找的查询:

SELECT DG.*
FROM Doc_group DG
WHERE NOT EXISTS (SELECT D.id
FROM Doc D
WHERE D.doc_group_id = DG.id
AND D.date < DATEADD(DAY, -90, GETUTCDATE()))

那是 T-SQL 的解决方案,我不确定 MySQL 版本。希望对您有所帮助。

快速搜索后,这里是查询的 MySQL 版本:

 SELECT DG.*
FROM Doc_group DG
WHERE NOT EXISTS (SELECT D.id
FROM Doc D
WHERE D.doc_group_id = DG.id
AND D.date < DATE_SUB(CURDATE(), INTERVAL 90 DAY))

我没有任何 MySQL 数据库来测试这个查询,但它应该可以工作 ;-)

关于mysql - SQL 返回父表中的所有行,其中条件与子表的另一个子表匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25513027/

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