以下のコードから得られる問題を修正するにはどうすればよいですか'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
以下のコードから得られる問題を修正するにはどうすればよいですか'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
とテーブルuser_id
の両方に というフィールドがあるため、どちらを使用するかを指定するだけです。user_info
user
user_id
... WHERE user.user_id=1
SQL はこのあいまいさを容認しません。なぜなら、SQL が知っている限りでは、両方のフィールドがまったく異なるデータを表す可能性があるからです。
列のエイリアス名に言及し、 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
解決策は、各列をどこでも明示的に選択することです。選択リストで 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;