将一个表中的值链接到另一个表,并根据 sql 中另一个表中的列对一个表进行切片

Posted

技术标签:

【中文标题】将一个表中的值链接到另一个表,并根据 sql 中另一个表中的列对一个表进行切片【英文标题】:link a value from one table to another and slice one table based on columns from another table in sql 【发布时间】:2021-01-28 19:40:48 【问题描述】:

假设我有这样的第一张桌子:

tbl1:

 eventid       date1         date2
   A          2020-06-21    2020-06-28
   B          2020-05-13    2020-05-24
   C          2020-07-20    2020-06-28

我还有第二张表,上面有数量和日期:

tbl2:

      quantity       date
        5        2020-06-24
        13       2020-07-24
        8        2020-07-28
        8        2020-06-20
        12       2020-06-27
        9        2020-06-29
        10       2020-05-24
        11       2020-05-12
        18       2020-05-18
        9        2020-05-14
        7        2020-07-18
        12       2020-07-21

现在我只想选择表 2 中日期介于表 1 日期之间的行,并在表中添加一列,每行包含 A、B 或 C(表 1 中的 eventid),以便我们可以看到表2中哪个日期属于哪个eventid。

所以我的最终结果是这样的:

      quantity       date       eventid
        5        2020-06-24        1
        13       2020-07-24        3
        8        2020-07-28        3
        12       2020-06-27        1
        10       2020-05-24        2
        18       2020-05-18        2
        9        2020-05-14        2
        12       2020-07-21        3

我已经主演了很久了,因为我需要一种有效的方法来做到这一点..

有没有一种有效的方法来获得想要的结果?

【问题讨论】:

【参考方案1】:

这看起来像join

select t2.*, t1.eventid
from tbl2 t2 join
     tbl1 t1
     on t2.date >= t1.date1 and t2.date <= t2.date2;

【讨论】:

是否有可能如果一个(或两个)表非常大,它会变成一个非常慢的操作? @Steven01123581321。 .是的。但是考虑到您正在处理日期,很难想象任何一个表都超过几千行。如果您想了解如何优化查询,请提出 new 问题,并确保包含您正在使用的数据库的标签。 谢谢。接受了答案。 (仅供参考:表 2 有 85 M 行..:))

以上是关于将一个表中的值链接到另一个表,并根据 sql 中另一个表中的列对一个表进行切片的主要内容,如果未能解决你的问题,请参考以下文章

如何根据oracle中另一个表中的值更新一个表中的字段[重复]

如何将表中的数据用作 SQL 中另一个命令的值?

根据表中另一个现有列的内容更改 SQL Server 中的现有列

根据 Access DB 中另一个表中的多条记录计算字段的值

从表中选择所有行并仅将不同的值插入到 C# 中另一个位置的数据库中

我想要一个 pandas 脚本根据第一个电子表格中的值将一个 excel 表中的值排列到另一个表中