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

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

Susan Sarandon
發布: 2025-01-12 15:22:42
原創
791 人瀏覽過

Why Does My MySQL Query Return

MySQL 錯誤:"運算元應包含 1 列" 的解法

在最近的 SQL 查詢中,一位開發者遇到了一個令人困惑的錯誤:「運算元應包含 1 列」。這個錯誤阻止了他們的進度,但經過仔細調查,找到了解決方案。

問題查詢試圖從 'topics' 和 'posts' 兩個表中檢索數據,並包含一個子查詢的統計信息,該子查詢從 'users' 表中選擇了兩個列。然而,這個子查詢試圖將兩列投影為一列,導致了錯誤訊息。

理解錯誤:

「操作數應包含 1 列」 錯誤發生在查詢試圖對多列進行操作(例如,聚合)時,就好像它們是單一列一樣。在這個特定案例中,子查詢從 'users' 表中同時選擇了 'username' 和 'id'。

解決問題:

為了解決這個問題,子查詢被重新配置為透過直接連接到 '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>
登入後複製

直接連接的優點:

直接連接到 'users' 表提供了幾個好處:

  • 靈活性: 從 'users' 表中選擇列變得更加直接,並且允許僅選擇必要的資料。
  • 簡化子查詢: 去除子查詢簡化了整個查詢,使其更易於閱讀和維護。
  • 改進效能: 直接連接表有時可以透過減少檢索所需資料所需的查詢數量來提高效能。

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

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