我可以將 WHERE 子句限制為 MySQL 中的特定欄位嗎?

Barbara Streisand
發布: 2024-11-05 18:17:02
原創
876 人瀏覽過

Can I Restrict WHERE Clauses to Specific Fields in MySQL?

MySQL 中 WHERE 子句可以限制為特定欄位嗎?

MySQL 中,WHERE 子句依照指定條件過濾行。但是,不可能將 WHERE 子句的應用限製到查詢中的特定欄位。

理解問題

在問題的上下文中,目標是顯示可用課程的清單以及關聯用戶的註冊狀態。每行代表一門課程並顯示特定使用者的註冊狀態 (userHabilitado)。但是,必須從 URL 中取得使用者的 userID,並用於過濾該特定使用者的結果。

解決方案:利用非完整分組依據

之前MySQL 5.7 開始,MySQL 允許非完整分組依據,這意味著像group_concat 這樣的聚合函數可以與非聚合列(NON AGGS)一起使用。但是,從 MySQL 5.7 開始,預設啟用 ONLY_FULL_GROUP_BY 設定,不允許此類查詢。

在這種情況下,查詢嘗試將 userHabilitado 新增至正在顯示的列清單中,這些列已按 Cursos 分組.cursoID。但是,顯示的 userHabilitado 值不會被 WHERE 子句過濾,因此顯示為該使用者找到的第一個值,無論課程為何。

解決方法:禁用非完整分組依據

一種解決方法是使用SQL_CALC_FOUND_ROWS 修飾符禁用特定查詢的ONLY_FULL_GROUP_BY:

<code class="sql">SET SQL_CALC_FOUND_ROWS = 0;</code>
登入後複製

但是,不建議這樣做,因為它可能會導致結果中潛在的差異,並且應該與小心。

以上是我可以將 WHERE 子句限制為 MySQL 中的特定欄位嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!