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

将一个值从一个表链接到另一个表,并基于sql中另一个表的列对一个表进行切片,sql,join,Sql,Join,假设我有这样的第一张桌子: tbl1: 我还有第二张表,上面有数量和日期: tbl2: 现在,我只想选择表2中日期介于表1日期之间的行,并向表中添加一列,每行包含a、B或C(表1中的eventid),以便我们可以看到表2中的哪个日期属于哪个eventid 因此,我的最终结果如下: quantity date eventid 5 2020-06-24 1 13 2020-07-24

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

tbl1:

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

tbl2:

现在,我只想选择表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
我已经在这部电影上演了好几年了,因为我需要一种有效的方式来演


是否有一种有效的方法来获得所需的结果?

这看起来像是一个
连接:

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

在t2.date>=t1.date1和t2.date上,如果一个(或两个)表非常大,它是否可能成为一个非常慢的操作?@Steven01123581321。对但考虑到您要处理的是日期,很难想象任何一个表都会超过几千行。如果您想知道如何优化查询,请提出一个新问题,并确保包含您正在使用的数据库的标记。谢谢。我接受了答案。(仅供参考:表2有85m行……)
      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
select t2.*, t1.eventid
from tbl2 t2 join
     tbl1 t1
     on t2.date >= t1.date1 and t2.date <= t2.date2;