0

关于Column '' in field list is ambiguousMySQL中的错误。如果 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].')将字段添加到变量中,然后执行它。还有其他人有什么想法吗?

4

2 回答 2

2

我可以立即看到“电子邮件”字段不明确,因为它存在于您的第一个表 Leads_auto 中,并且您在 JOIN 中选择了它。当你使用 JOIN 时,你应该在所有的 SELECTions 前面加上一个明确的表别名,像这样:

SELECT la.lead_id,la.set_id,la.upload_date,...  
FROM leads_auto la
JOIN (SELECT ...) y
...

通过这种方式,您可以引用la.field_namey.field_name明确您的意思。

于 2012-10-09T18:52:07.477 回答
0

只是一个建议,但我会按照与子句INSERT中相同的顺序列出列名。SELECT

于 2012-10-09T18:49:52.777 回答