繁体   English   中英

如何在第二个查询中使用第一个查询的结果?

[英]How do I use results of first query in second query?

我有数千个篮子,每个篮子都有自己的唯一ID。 数以百万计的球,每个球都有自己的唯一ID。 这些球有些是红色的。 我的数据库有数以百万计的记录,包括3个字段,basketID,ballID和ball color。 我需要返回篮子中有红色球的所有BallID。 当[Ballcolor] =“ RED”时,我在最近的几个小时中找出了足够的查询来返回BasketID。 现在我被卡住了。 我需要所有包含该结果中所有basketID的记录。 我第一次使用Access是因为我刚刚意识到Excel只能处理一百万行,尽管我当时写了一系列宏和辅助列来解决。 通用策略将起作用,稍后我可以弄清楚语法。 最坏的情况是,我可以在将它们导入到Access中之前一次在Excel中“清理”一百万条记录,但这将需要一些我不希望的过夜。

SELECT basketID from <tablename> WHERE ballcolor = "RED";

上面的查询为您提供了带有红色球的basketID。

通过此查询,您可以使用子查询找到篮子中所有带有红色球的ballID。

SELECT ballID from <tablename> 
WHERE basketID IN 
(SELECT basketID from <tablename> WHERE ballcolor = "RED");

子查询会是您想要的吗? 可能是这样的:

SELECT ballID
FROM (
       SELECT *
       FROM balls
       WHERE basketID = 'RED'
      )

您可以使用子查询 让我们使用第一个查询的结果集作为第二个查询的输入。

让我们来看一下您已经拥有的查询:

SELECT DISTINCT basketId 
FROM table 
WHERE ballColor = "RED"

这为您提供了一个至少包含一个红色球的独特篮子列表。

现在,我们需要此列表中所有篮子中的每个球。

SELECT * 
FROM table 
WHERE basketId IN (
    SELECT DISTINCT basketId
    FROM table
    WHERE ballColor = "RED"
)

有人会说子查询很糟糕,因为它们会导致性能下降。 如果这成为问题,则应考虑使用JOIN

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM