首頁 > 資料庫 > mysql教程 > 如何修復「操作數應包含 1 列」MySQL 錯誤?

如何修復「操作數應包含 1 列」MySQL 錯誤?

Mary-Kate Olsen
發布: 2025-01-12 15:27:43
原創
841 人瀏覽過

How to Fix the

MySQL 錯誤「操作數應包含 1 列」的解法

本文將解決 MySQL 查詢中出現的「運算元應包含 1 列(s)」錯誤。此錯誤通常發生在子查詢傳回多列,而外層查詢只期望單列的情況。

錯誤理解:

「運算元應包含 1 列(s)」錯誤表示運算元(此處為子查詢)預期傳回單列,但實際傳回多列,導致列數不符。

問題解決:

可以透過修改查詢,確保子查詢只傳回單列來解決此問題。主要有兩種方法:

1. 使用 JOIN:

避免使用子查詢,直接使用 JOINusers 表與 posts 表連接在 posted_by 欄位上。此方法在選擇 users 表中的特定欄位時更具彈性。

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

2. 從子查詢中選擇單列:

或者,可以使用 GROUP BY 子句修改子查詢使其只傳回單一欄位。但是,如果多個使用者俱有相同的 ID,此方法可能會導致資料遺失。

<code class="language-sql">SELECT
topics.id,
topics.name,
topics.post_count,
topics.view_count,
COUNT(posts.solved_post) AS solved_post,
(SELECT users.username FROM users WHERE users.id = posts.posted_by GROUP BY users.id) AS posted_by
FROM topics
LEFT OUTER JOIN posts ON posts.topic_id = topics.id
WHERE topics.cat_id = :cat
GROUP BY topics.id</code>
登入後複製

選擇哪種方法取決於您的特定需求和資料結構。 第一種方法 (使用 JOIN) 通常是更有效率且更清晰的解決方案。

以上是如何修復「操作數應包含 1 列」MySQL 錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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