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