将一个表中的值链接到另一个表,并根据 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 Server 中的现有列
根据 Access DB 中另一个表中的多条记录计算字段的值