【问题标题】:#1052 - Column 'noMyKid' in where clause is ambiguous#1052 - where 子句中的列“noMyKid”不明确
【发布时间】:2014-04-14 03:25:51
【问题描述】:
SELECT *, DATEDIFF(CURDATE(),tarikhmohon) AS hari
FROM mohon a
INNER JOIN tblstatus_tak_lengkap b on a.noMyKid=b.nomykid
WHERE noMyKid=130902100437
我已经尝试过该 SQL,但出现错误。
#1052 - where 子句中的“noMyKid”列不明确。
我找不到问题。
【问题讨论】:
标签:
sql
database
mysql-error-1052
【解决方案1】:
列noMyKid 存在于两个表中。您应该告诉服务器您要过滤的列在哪个表上,例如
WHERE a.noMyKid = 130902100437
或
WHERE b.noMyKid = 130902100437
无论你使用什么,都无所谓,因为你使用的是INNER JOIN。
【解决方案2】:
我认为您在两个表中都有“noMyKid”列。
像这样添加前缀:a.noMyKid
【解决方案3】:
试着换成
SELECT *, DATEDIFF(CURDATE(),tarikhmohon) AS hari
FROM mohon a
INNER JOIN tblstatus_tak_lengkap b on a.noMyKid=b.nomykid
WHERE a.noMyKid=130902100437
【解决方案4】:
问题在于mohon 和tblstatus_tak_lengkap 都有一个noMyKid 列(至少在使用不区分大小写的列名的安装中)。在WHERE 子句中,您需要指定要从哪个表读取noMyKid。
由于您已经加入了该值,因此您选择哪个表并不重要,所以这样的事情可以正常工作:
SELECT *, DATEDIFF(CURDATE(),tarikhmohon) AS hari
FROM mohon a
INNER JOIN tblstatus_tak_lengkap b on a.noMyKid=b.nomykid
WHERE a.noMyKid=130902100437