web-dev-qa-db-ja.com

MySQLの「user_id」のwhere句はあいまいな問題です

'user_id' in where clause is ambiguous。事前に助けてくれてありがとう。

これがmysqlテーブルです。

SELECT user.*, user_info.* 
FROM user 
INNER JOIN user_info ON user.user_id = user_info.user_id
WHERE user_id='$user_id'
16
HoMe

user_idテーブルとuserテーブルの両方にuser_infoというフィールドがあるため、使用するuser_idを指定するだけです。

... WHERE user.user_id='$user_id'

SQLは、このあいまいさを許容しません。なぜなら、SQLが知っていることについては、両方のフィールドがまったく異なるデータを表すことができるからです。

39
Daniel Vassallo

これを試して。

SELECT u.user_id, u.user_fudge, ui.foo, ui.bar
FROM user AS u
INNER JOIN user_info AS ui
   ON ui.user_id = u.user_id
WHERE u.user_id = '$user_id';
0
Dee_wab

あなたはあなたの列のエイリアス名を言及し、user_idに割り当てる必要があります

SELECT user.*, user_info.* 
FROM user as u 
INNER JOIN user_info as ui ON u.user_id = ui.user_id
WHERE u.user_id='$user_id'
0
user3773680

解決策は、すべての場所で各列を明示的に選択することです。選択リストでuser。*およびuser_info。*を使用しないでください。

SELECT u.user_id, u.user_fudge, ui.foo, ui.bar
FROM user u
INNER JOIN user_info ui
    ON ui.user_id = u.user_id
WHERE u.user_id = '$user_id';
0
Dave Markle