首页 > 解决方案 > SQL - 在嵌套查询中的表之间传输值

问题描述

一个忠实的 python 在这里尝试使用 SQL 查询而不是 Pandas 来完成任务。这可能是一个非常基本的问题,但这里有:

所以我有一个名为 Reading 的表格,它显示了不同地点的每月用电量:

=== Reading ===
ID  PlacementID DateFrom    DateUntil   Usage
1   3552        2018-07-01  2018-07-31  5992
2   3552        2018-08-01  2018-08-31  6318
3   3554        2018-08-01  2018-08-31  4782
4   3554        2018-09-01  2018-09-30  2001
5   3558        2018-08-01  2018-08-31  1582
6   3558        2018-09-01  2018-09-30  1825

我还有一个名为 ReadingDay 的表,它以类似的方式存储日常使用值 - 但是,它不包含 PlacementID - 相反,它通过一个名为“ReadingID”的列与 Reading 表相关,该列对应于 Reading 中的“ID”列:

=== ReadingDay ===
ID  ReadingID   Date        Usage
1       1       2018-07-01  302
2       1       2018-07-02  254
....
182     6       2018-09-30  186
183     6       2018-09-31  104

在这种情况下,我的目标是查询 ReadingDay 表中所有属于 PlacementID 3552 和 3558 的实例,如 ReadingDay 表中声明的那样,并在 ReadingDay 表中创建一个名为“PlacementID”的列,以便人们可以轻松查看哪个位置在数据中被引用,而无需查看阅读表。

这是我尝试做的非功能性新手代码(即使对我来说,这不起作用的原因也很明显,但这是我迄今为止最好的选择):

SELECT ID, ReadingID, Date, Usage 
FROM ReadingDay
WHERE ReadingID IN (
    SELECT ID
    FROM Reading
    WHERE PlacementID IN (3552, 3558)
)
INSERT PlacementID

标签: sqlsql-server

解决方案


select rd.ID, rd.ReadingID, rd.Date, rd.Usage, r.PlacementID
from ReadingDay rd 内部连接 ​​Reading r on rd.ID = r.PlacementID

WHERE r.PlacementID IN (3552, 3558)


推荐阅读