MySQL WHERE 句のあいまいな 'user_id'
共通の列名を共有する複数のテーブルを含むデータベースをクエリする場合、明示的に指定することが重要ですWHERE 句でどのテーブルの列を参照しているのか。このあいまいさは、「user」や「user_info」などのテーブルに「user_id」などの共有列名がある場合に発生します。
問題
以下のクエリは、 「user」テーブルと「user_info」テーブルを結合しますが、「where 句で「user_id」」というエラーが発生します。曖昧さ":
SELECT user.*, user_info.* FROM user INNER JOIN user_info ON user.user_id = user_info.user_id WHERE user_id=1
解決策
この曖昧さを解決するには、どのテーブルの 'user_id' 列を値 1 と比較するかを指定する必要があります。これは、列名の前にテーブルの別名を付けることで行われます:
SELECT user.*, user_info.* FROM user INNER JOIN user_info ON user.user_id = user_info.user_id WHERE user.user_id=1
By明示的に「user.user_id」を指定すると、これがフィルター対象の列であり、「user_info」テーブルの「user_id」列ではないことをデータベースに通知することになります。これによりあいまいさがなくなり、クエリが正常に実行できるようになります。
以上がMySQL WHERE 句の「user_id」のあいまいさを解決する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。