Mysql 为字段指定限定表名的替代解决方案
关于字段列表中的列在MySQL中是不明确的错误。这是因为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
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,并明确表示您的意思