gpt4 book ai didi

mysql - 如何根据日期连接两个表?数据库管理系统

转载 作者:行者123 更新时间:2023-11-29 17:46:07 25 4
gpt4 key购买 nike

我正在尝试连接两个都有检查日期的表。仅当第一个表中的检查日期等于第二个表中的检查日期时,才应显示结果。或者如果两个表中的检查日期彼此相差 10 天内。

我有两个表:

t1 table: company_id, expected_checkdate

t2 table: company_id, actual_checkdate
  • 条件 1: acutal_checkdate = Expected_checkdate
  • 条件 2:acutal_checkdate 比预期_checkdate 早 10 天内
  • 条件 3:expected_checkdate 在 acutal_checkdate 的 10 天内
  • 条件 4:如果 acutal_checkdate = Expected_checkdate,则不要检查 10 天内的其他日期

      LEFT OUTER JOIN t2 ON t1.actual_checkdate = t2.expected_checkdate
    OR t1.actual_checkdate
    BETWEEN DATE_ADD(t2.expected_checkdate, INTERVAL -10 DAY)
    AND DATE_ADD(t2.expected_checkdate, INTERVAL 10 DAY)
    AND t1.company_id = t2.company_id

问题是当我运行一个月时。我看到很多重复项,因为一个月内可能有 2 个实际检查日期条目或 2 个预期检查日期条目。

      |---------------------|------------------|------------------|
| company_id | actual_checkdate |expected_checkdate|
|---------------------|------------------|------------------|
| 12 | 2018-01-05 | 2018-01-05 |
|---------------------|------------------|------------------|
| 12 | 2018-01-19 | 2018-01-19 |
|---------------------|------------------|------------------|
| 12 | 2018-01-05 | 2018-01-19 | -- incorrect
|---------------------|------------------|------------------|
| 12 | 2018-01-19 | 2018-01-05 | -- incorrect
|---------------------|------------------|------------------|
| 13 | 2018-01-12 | 2018-01-20 |
|---------------------|------------------|------------------|
| 14 | 2018-01-26 | 2018-01-36 |
|---------------------|------------------|------------------|

前两行和最后两行是正确的。第三行和第四行不应显示,因为它们与第一行和第二行重复。请帮我加入上面的内容。

最佳答案

您可以将 JOIN 条件重写为:

FROM t1
JOIN t2 ON t1.company_id = t2.company_id AND
(t1.actual_checkdate = t2.expected_checkdate OR
t1.actual_checkdate BETWEEN
DATE_SUB(t2.expected_checkdate, INTERVAL 10 DAY)
AND DATE_ADD(t2.expected_checkdate, INTERVAL 10 DAY)
AND NOT EXISTS (SELECT * FROM t1 WHERE t1.actual_checkdate = t2.expected_checkdate AND t1.company_id = t2.company_id)
)

如果存在实际匹配,NOT EXISTS 子句将阻止在附近日期进行匹配。

关于mysql - 如何根据日期连接两个表?数据库管理系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49820079/

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