区别不工作?

时间:2012-02-15 18:06:10

标签: sql oracle distinct sqlplus

我需要在表格中插入一些字段。表:

    CREATE TABLE RADAR(
    ctfoto  VARCHAR2(5),
    pkradar NUMBER(3,0),
    sradar  VARCHAR2(3),
    limitvelctera   NUMBER(3,0),
    limitvelradar NUMBER(3,0),  
    CONSTRAINT radar_pk PRIMARY KEY(ctfoto, pkradar, sradar)
);

插入操作:

INSERT INTO RADAR(ctfoto, pkradar, sradar, limitvelctera, limitvelradar)
SELECT distinct carretera_foto, pto_km_radar, sentido_radar, limit_vel_ctera, limit_vel_radar FROM gotcha 

错误:

ORA-00001: unique constraint (USER4704.RADAR_PK) violated

请帮忙。

2 个答案:

答案 0 :(得分:3)

gotcha中可能有多条记录在字段carretera_foto, pto_km_radar, sentido_radar中具有相同的值。

DISTINCT表示不会重复整个记录。

答案 1 :(得分:3)

DISTINCT适用于您选择的整个列集。

很可能,GOTCHA中的行具有相同的carretera_fotopto_km_radarsentido_radar值但其他两个中的一个或两个的值不同列(limit_vel_cteralimit_vel_radar)。 DISTINCT中的SELECT无法消除任何一行,因为至少有一个值不同,但RADAR表上的主键约束拒绝前三列相同的行。< / p>