首頁 > 資料庫 > mysql教程 > 為什麼我的 SQL 子查詢會產生「選擇清單中只能指定一個表達式」錯誤?

為什麼我的 SQL 子查詢會產生「選擇清單中只能指定一個表達式」錯誤?

Linda Hamilton
發布: 2025-01-11 13:36:42
原創
319 人瀏覽過

Why Does My SQL Subquery Produce

追蹤 SQL 子查詢錯誤:「只能指定一個表達式...」

當您的SQL 查詢在IN 子句中使用子查詢並且子查詢嘗試傳回多個列時,會出現此錯誤:「當未使用EXISTS 引入子查詢時,選擇清單中只能指定一個表達式” 。 IN 運算子僅接受單一欄位進行比較。

讓我們檢查一下有問題的查詢:

<code class="language-sql">select count(distinct dNum)
from myDB.dbo.AQ
where A_ID in 
  (SELECT DISTINCT TOP (0.1) PERCENT A_ID, 
            COUNT(DISTINCT dNum) AS ud 
 FROM         myDB.dbo.AQ
 WHERE     M > 1 and B = 0 
 GROUP BY A_ID ORDER BY ud DESC)</code>
登入後複製

內部 SELECT 語句錯誤地回傳 A_IDCOUNT(DISTINCT dNum) AS ud。 這違反了與 IN.

一起使用的子查詢的規則

已修正的查詢:

解決方案涉及重組子查詢以僅傳回 A_ID 列:

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

此修改後的查詢現在可以正確選擇子查詢中的 A_ID,從而解決了錯誤。 COUNT(DISTINCT dNum) 的排序是在子查詢本身內處理的,確保選擇前 10% 的 A_ID 值(基於 COUNT(DISTINCT dNum)

以上是為什麼我的 SQL 子查詢會產生「選擇清單中只能指定一個表達式」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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