关于MySQL中的Column '' in field list is ambiguous
错误。如果mysql无法确定字段名称属于哪个表,则会导致它。有没有人知道为字段指定限定表名的不同方法,而不是将表名添加到字段本身前面。假设我有一个像这样的字段列表
INSERT INTO dupes
( lead_id,set_id,upload_date,agent,callcenter
,generation_date,vendors,first_name
,last_name,email,phone,address,city,state,zip,dob
,gender,marital_status,rented,year,make,model,trim
,vin,primary_use,miles_oneway,mileage,license_num,license_state
,education,job_title,license_status)
(SELECT lead_id,set_id,upload_date,agent,vendors,callcenter
,generation_date,first_name,last_name
,email,phone,address,city,state,zip,dob,gender,marital_status
,rented,year,make,model,trim,vin,primary_use,miles_oneway
,mileage,license_num,license_state,education,job_title
,license_status
FROM leads_auto
JOIN (
SELECT vendors, email, MIN(lead_id) min_lead_id
FROM leads_auto
WHERE vendors = 1762
GROUP BY vendors, email) y
ON y.vendors = leads_auto.vendors
AND y.email = leads_auto.email
AND leads_auto.lead_id <> y.min_lead_id)
现在我正在考虑使用GROUP_CONCAT([fields] SEPARATOR ',[table name].')
将字段添加到变量中,然后执行它。还有其他人有什么想法吗?
答案 0 :(得分:2)
我可以立即看到字段“电子邮件”含糊不清,因为它存在于您的第一个表lead_auto中,并且您在JOIN中选择它。当您使用JOIN时,您应该在所有SELECTions前面加上一个显式的表别名,如下所示:
SELECT la.lead_id,la.set_id,la.upload_date,...
FROM leads_auto la
JOIN (SELECT ...) y
...
通过这种方式,您可以引用la.field_name
或y.field_name
并明确指出您的意思。
答案 1 :(得分:0)
只是一个建议,但我会按照INSERT
子句中的顺序列出SELECT
列名称。