Kabur 'user_id' dalam MySQL WHERE Klausa
Apabila menanyakan pangkalan data dengan berbilang jadual yang berkongsi nama lajur biasa, adalah penting untuk menyatakan secara eksplisit lajur jadual manakah yang anda rujuk dalam klausa WHERE. Kekaburan ini timbul apabila jadual seperti 'pengguna' dan 'info_pengguna' mempunyai nama lajur yang dikongsi, seperti 'id_pengguna'.
Masalahnya
Pertanyaan di bawah cuba untuk sertai jadual 'pengguna' dan 'info_pengguna', tetapi ia menghasilkan ralat "'user_id' di mana klausa tidak jelas":
SELECT user.*, user_info.* FROM user INNER JOIN user_info ON user.user_id = user_info.user_id WHERE user_id=1
Penyelesaian
Untuk menyelesaikan kekaburan ini, anda mesti menentukan lajur 'user_id' jadual mana yang anda bandingkan dengan nilai 1. Ini dilakukan dengan meletakkan awalan nama lajur dengan alias jadual:
SELECT user.*, user_info.* FROM user INNER JOIN user_info ON user.user_id = user_info.user_id WHERE user.user_id=1
Dengan menyatakan secara jelas ' user.user_id', anda memberitahu pangkalan data bahawa ini adalah lajur yang anda ingin tapis, bukan lajur 'user_id' daripada jadual 'user_info'. Ini menghapuskan kekaburan dan membenarkan pertanyaan untuk dilaksanakan dengan jayanya.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Kekaburan 'user_id' dalam Klausa MySQL WHERE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!