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

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

Mary-Kate Olsen
發布: 2025-01-11 13:32:44
原創
569 人瀏覽過

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作為列傳回。

更正後的查詢範例:

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
)
登入後複製

透過實作這些更改,查詢可以正確地傳回所需的結果,同時遵守為WHERE IN比較傳回單列的規則。

以上是為什麼My SQL子查詢回傳「當子查詢不帶EXISTS引入時,選擇清單中只能指定一個表達式」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板