19

以下のコードから得られる問題を修正するにはどうすればよいですか'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=1
4

4 に答える 4

45

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

... WHERE user.user_id=1

SQL はこのあいまいさを容認しません。なぜなら、SQL が知っている限りでは、両方のフィールドがまったく異なるデータを表す可能性があるからです。

于 2010-05-07T12:00:45.127 に答える
0

列のエイリアス名に言及し、 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=1
于 2015-03-14T13:11:25.040 に答える
0

解決策は、各列をどこでも明示的に選択することです。選択リストで 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 = 1;
于 2010-05-07T12:01:36.093 に答える