首頁 > 資料庫 > mysql教程 > 為什麼我的 MySQL 查詢回傳「操作數應包含 1 列」錯誤?

為什麼我的 MySQL 查詢回傳「操作數應包含 1 列」錯誤?

Susan Sarandon
發布: 2025-01-12 15:26:43
原創
498 人瀏覽過

Why Does My MySQL Query Return an

MySQL 錯誤:解決「操作數應包含 1 列」問題

在你的 MySQL 查詢中,你遇到了「運算元要包含 1 個欄位」的錯誤。這個錯誤通常發生在子查詢傳回多個列,而外層查詢在該位置只期望單列的情況。

理解錯誤:

出錯的查詢包含一個子查詢:

<code class="language-sql">(SELECT users.username AS posted_by,
    users.id AS posted_by_id
    FROM users
    WHERE users.id = posts.posted_by)</code>
登入後複製

這個子查詢檢索兩列,「posted_by」 和 「posted_by_id」。但是,你在外層查詢中將這個子查詢用作單列:

<code class="language-sql">COUNT( posts.solved_post ) AS solved_post,
(SUBQUERY)</code>
登入後複製

這種不一致導致了「操作數應包含 1 列」的錯誤,因為外層查詢在這個位置期望一個單列。

解決方法:

方法一:使用表格連接

為了解決這個問題,考慮直接連接 "users" 表,而不是使用子查詢。這將允許你明確地選擇 "posted_by" 和 "posted_by_id" 列,而不會違反單列約束。

<code class="language-sql">SELECT
topics.id,
topics.name,
topics.post_count,
topics.view_count,
COUNT( posts.solved_post ) AS solved_post,
users.username AS posted_by,
users.id AS posted_by_id

FROM topics

LEFT OUTER JOIN posts ON posts.topic_id = topics.id
LEFT OUTER JOIN users ON users.id = posts.posted_by

WHERE topics.cat_id = :cat
GROUP BY topics.id</code>
登入後複製

方法二:從子查詢中選擇單列

或者,如果你堅持使用子查詢,你可以修改它只回傳所需的欄位。例如,你可以只檢索 "posted_by" 欄位:

<code class="language-sql">(SELECT users.username AS posted_by
    FROM users
    WHERE users.id = posts.posted_by)</code>
登入後複製

透過在子查詢中選擇單列,你可以確保它符合外層查詢的單列要求。

以上是為什麼我的 MySQL 查詢回傳「操作數應包含 1 列」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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