首页  >  文章  >  数据库  >  我可以将 WHERE 子句限制为 MySQL 中的特定字段吗?

我可以将 WHERE 子句限制为 MySQL 中的特定字段吗?

Barbara Streisand
Barbara Streisand原创
2024-11-05 18:17:02881浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn