簡體   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