[英]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.