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' 表提供了幾個好處:
以上是為什麼我的 MySQL 查詢回傳「操作數應包含 1 列」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!