SQL子查詢選擇清單限制
當遇到錯誤「當子查詢未以EXISTS開頭時,選擇清單中只能指定一個運算式」時,表示子查詢的回傳值有問題。在嵌套於WHERE IN子句中的子查詢中,務必確保只傳回一列,以便與IN的另一側進行比較。
提供的查詢最初包含一個子查詢,該子查詢將A_ID和COUNT(DISTINCT dNum)作為ud傳回。但是,在WHERE IN子句中,子查詢只能傳回單一列,該列將與主查詢中的A_ID進行比較。此限制存在的原因是子查詢的功能是傳回一個值列表,以檢查主查詢中的A_ID是否與子查詢結果中的任何值相符。
為了解決這個問題,修改子查詢以只傳回A_ID列,該列將與主查詢WHERE IN子句中的A_ID進行比較。此外,可以在ORDER子句中使用排序來從子查詢中選擇行,而無需將COUNT作為列傳回。
更正後的查詢範例:
<code class="language-sql">SELECT COUNT(DISTINCT dNum) FROM myDB.dbo.AQ WHERE A_ID IN ( SELECT DISTINCT TOP (0.1) PERCENT A_ID FROM myDB.dbo.AQ WHERE M > 1 AND B = 0 GROUP BY A_ID ORDER BY COUNT(DISTINCT dNum) DESC )</code>
透過實作這些更改,查詢可以正確地傳回所需的結果,同時遵守為WHERE IN比較傳回單列的規則。
以上是為什麼My SQL子查詢回傳「當子查詢不帶EXISTS引入時,選擇清單中只能指定一個表達式」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!