我想从表A中插入表B中的一些特定列,其中我将其中一列作为PKEY:
DROP TABLE IF EXISTS Vehicle CASCADE;
CREATE TABLE Vehicle(
license VARCHAR(20),
vehicle_type VARCHAR(255),
make VARCHAR(255),
model VARCHAR(255),
year INTEGER,
color VARCHAR(255),
state CHAR(2),
PRIMARY KEY (license)
);
当我使用INSERT函数时出现问题,因为我使用SELECT DISTINCT选项,我想我只是将列的DISTINCT一起完成:
INSERT INTO Vehicle(license, vehicle_type, make, model, year, color, state)
SELECT
DISTINCT(license)
,vehicle_type
,make
,model
,year
,color
,state
from Importacio;
我想插入每辆车的信息,但没有重复,作为其牌照(板)不应该在车辆中重复。然后这显示我何时运行它:
ERROR: duplicate key value violates unique constraint "vehicle_pkey" DETAIL: Key (license)=(MD-117254-MB) already exists.
如何仅在考虑DISTINCT许可证的情况下进行INSERT?也许我应该使用LEFT JOIN,但我不确定。 提前谢谢!
答案 0 :(得分:0)
因为您的表importacio有重复项,您必须为将要排除的内容定义另一个过滤条件。
EG。您可以在最近一年进行排序。
INSERT INTO Vehicle(license, vehicle_type, make, model, year, color, state)
SELECT DISTINCT license ,vehicle_type ,make ,model ,year ,color ,state
from Importacio t1
Join (select t2t1.licencse, max(t2t1.year) 'year' from impotacio t2t1 group by t2t1.license) t2 on t1.Licencse=t2.license and t1.year=t2.year
虽然因为我不知道你的数据,也可能有重复的年份。你可以添加另一个JOIN语句来增强过滤,但你应该分析重复项并根据它进行连接