【发布时间】:2021-01-26 18:44:27
【问题描述】:
我目前有一个用户表和一个 Picks(用于足球池)。当得到结果时,我运行一个查询来选择用户,然后在我的代码中我遍历该列表,从另一个表中为每个用户选择多个选择。
Picks 表在不同的行中包含每个选择,因此:GameID、UserID、Pick。实际上存在与另一个具有 GameID:Week 关系的表的连接,但我可以将其更改为 IN 查询,现在并不担心。
这有点慢和笨重,所以我想知道是否可以通过一次查询整个数据集来加快速度。我很确定我在很久以前的某个地方做过这个,但我找不到我使用的代码。
伪编码类似于:SELECT UserID, (SELECT Multiple GameID, Pick FROM Picks WHERE UserID = @UserID)。 IE 我希望将子查询的多行作为主查询中的列返回。只有为子查询选择一个值,这是否真的可行?
【问题讨论】:
-
您的示例查询中的第一个
UserID将在此处出错;您的查询中没有FROM,因此UserID没有上下文。但是,子查询也将失败,因为它返回 2 列,并且在SELECT中引用的子查询只能返回 scalar 值。我的假设是你在JOIN之后。
标签: sql sql-server subquery left-join inner-join