Mysql 为字段指定限定表名的替代解决方案

Mysql 为字段指定限定表名的替代解决方案,mysql,sql,Mysql,Sql,关于字段列表中的列在MySQL中是不明确的错误。这是因为mysql无法确定字段名属于哪个表。除了将表名作为字段本身的前缀之外,是否有人知道为字段指定限定表名的其他方法。假设我有一个这样的字段列表 INSERT INTO dupes ( lead_id,set_id,upload_date,agent,callcenter ,generation_date,vendors,first_name ,last_name,email,phone,address,city,stat

关于字段列表中的列在MySQL中是不明确的错误。这是因为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].'将字段作为前缀添加到变量中,然后执行它。其他人有什么想法吗?

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

我可以立即看到“email”字段不明确,因为它存在于您的第一个表leads\u auto中,而您正在JOIN中选择它。使用JOIN时,应使用显式表别名作为所有选择的前缀,如下所示:

SELECT la.lead_id,la.set_id,la.upload_date,...  
FROM leads_auto la
JOIN (SELECT ...) y
...
通过这种方式,您可以引用la.field\u name或y.field\u name,并明确表示您的意思