首頁 >資料庫 >mysql教程 >為什麼My SQL子查詢回傳「當子查詢不帶EXISTS引入時,選擇清單中只能指定一個表達式」?

為什麼My SQL子查詢回傳「當子查詢不帶EXISTS引入時,選擇清單中只能指定一個表達式」?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-11 13:32:44549瀏覽

Why Does My SQL Subquery Return

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn