在資料庫開發過程中,遇到MySQL錯誤是很常見的。 當使用傳回多列的子查詢時,經常會出現這樣一個錯誤:「#1241 - 運算元應包含 1 列」。當子查詢向期望單列結果的外部查詢提供多於一列時,通常會發生這種情況。
錯誤訊息表示子查詢傳回的列數與主查詢的期望不相容。 外部 SELECT
語句嘗試使用多列子查詢結果,就好像它是單一值一樣。
可以透過調整查詢結構來解決此錯誤。這裡有兩個有效的方法:
<code class="language-sql">SELECT t.id, t.name, t.post_count, t.view_count, COUNT(p.solved_post) AS solved_post, u.username AS posted_by, u.id AS posted_by_id FROM topics t LEFT OUTER JOIN posts p ON p.topic_id = t.id LEFT OUTER JOIN users u ON u.id = p.posted_by WHERE t.cat_id = :cat GROUP BY t.id;</code>
MAX()
、MIN()
、AVG()
)或從 users
表中選擇特定列。 <code class="language-sql">SELECT t.id, t.name, t.post_count, t.view_count, COUNT(p.solved_post) AS solved_post, (SELECT u.username FROM users u WHERE u.id = p.posted_by) AS posted_by_username FROM topics t LEFT OUTER JOIN posts p ON p.topic_id = t.id GROUP BY t.id;</code>
透過實作這些解決方案中的任何一個,您將修正運算元錯誤並從 MySQL 資料庫準確檢索所需的資料。 選擇最佳解決方案取決於您的特定資料需求和查詢設計。
以上是如何修復子查詢中 MySQL 的「運算元應包含 1 列」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!