ホームページ > データベース > mysql チュートリアル > MySQL で WHERE 句を特定のフィールドに制限できますか?

MySQL で WHERE 句を特定のフィールドに制限できますか?

Barbara Streisand
リリース: 2024-11-05 18:17:02
オリジナル
955 人が閲覧しました

Can I Restrict WHERE Clauses to Specific Fields in MySQL?

MySQL では WHERE 句を特定のフィールドに制限できますか?

MySQL では、WHERE 句は指定された条件に基づいて行をフィルタリングします。ただし、WHERE 句の適用をクエリ内の特定のフィールドに制限することはできません。

問題の理解

質問のコンテキストでは、目的は、利用可能なコースのリストと、関連するユーザーの登録ステータスを表示することです。各行はコースを表し、特定のユーザーの登録ステータス (userHabilitado) を示します。ただし、ユーザーの userID を URL から取得し、その特定のユーザーの結果をフィルタリングするために使用する必要があります。

解決策:

前に非フル グループを悪用するMySQL 5.7 では、MySQL は非完全なグループ化を許可しました。これは、group_concat のような集計関数を非集計カラム (NON AGGS) で使用できることを意味しました。ただし、MySQL 5.7 以降では、ONLY_FULL_GROUP_BY 設定がデフォルトで有効になっており、そのようなクエリは許可されません。

この場合、クエリは表示されている列のリストに userHabilitado を追加しようとしますが、これらの列はすでに cursos によってグループ化されています。 .cursoID。ただし、表示されている userHabilitado 値は WHERE 句でフィルタリングされていないため、コースに関係なく、そのユーザーで最初に見つかった値が表示されます。

回避策: 非完全グループの無効化

回避策の 1 つは、SQL_CALC_FOUND_ROWS 修飾子を使用して特定のクエリの ONLY_FULL_GROUP_BY を無効にすることです。

<code class="sql">SET SQL_CALC_FOUND_ROWS = 0;</code>
ログイン後にコピー

ただし、これは結果に矛盾が生じる可能性があるため推奨されません。注意してください。

以上がMySQL で WHERE 句を特定のフィールドに制限できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート