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

フィールド「email」があいまいであることがすぐにわかります。これは、最初のテーブル lead_auto に存在し、JOIN で選択しているためです。JOIN を使用している場合は、次のように、すべての SELECTions の前に明示的なテーブル エイリアスを付ける必要があります。

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

このようにして、 or を参照la.field_namey.field_nameて、どちらを意味するかを明示できます。

于 2012-10-09T18:52:07.477 に答える
0

単なる提案ですが、列名を句INSERTと同じ順序でリストします。SELECT

于 2012-10-09T18:49:52.777 に答える