2016-02-14 4 views
0

Я просто изучаю sqlpro, и я полностью в тупике.Ошибка повторной записи sqlpro

Я пытаюсь сделать это:

insert into vehicleModel(vehicleModel) 
(select distinct(model) from vehicle 
order by model); 

я получаю это -

Дублировать запись 'Экспресс-2500 2WD Конверсия Ca' для ключа 'vehicleModel'

Если я запустил это -

select * from vehicle 
where model = 'Express 2500 2WD Conversion Ca'; 

Я ничего не получаю.

Любые предложения?

определение таблицы:

create table vehicleModel (
    vehicleModelid int not null auto_increment, 
    vehicleModel varchar(30) not null, 
    primary key (vehicleModelid) 
) 
engine = InnoDB default charset=latin1; 

им вытягивать отсюда -

CREATE TABLE `vehicle` (
    `vehicleId` int(11) NOT NULL DEFAULT '0', 
    `make` varchar(255) DEFAULT NULL, 
    `model` varchar(255) DEFAULT NULL, 
    `year` int(11) DEFAULT NULL, 
    `cylinders` int(11) DEFAULT NULL, 
    `displacement` varchar(255) DEFAULT NULL, 
    `drive` varchar(255) DEFAULT NULL, 
    `engId` int(11) DEFAULT NULL, 
    `eng_dscr` varchar(255) DEFAULT NULL, 
    `trany` varchar(255) DEFAULT NULL, 
    `mpgHighway` varchar(255) DEFAULT NULL, 
    `mpgCity` varchar(255) DEFAULT NULL, 
    `fuelCostAnnual` int(11) DEFAULT NULL, 
    `fuelType` varchar(255) DEFAULT NULL, 
    `fuelType1` varchar(255) DEFAULT NULL, 
    `VClass` varchar(255) DEFAULT NULL, 
    `mpgh` decimal(10,2) DEFAULT NULL, 
    `mpgc` decimal(10,2) DEFAULT NULL, 
    PRIMARY KEY (`vehicleId`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 
+0

Не относится здесь, но: 'distinct' это *** НЕ *** функцию. Он всегда применяется к столбцу ** all ** в списке выбора. Написание 'distinct (model)' не имеет смысла. –

+0

Можете ли вы показать нам определение «автомобильмодель» и определение его ключей и индексов? Также: «sqlpro», похоже, является клиентским инструментом SQL, а не СУБД. Итак, какую систему СУБД вы используете? –

+0

создать таблицу vehicleModel (vehicleModelid Int не нулевой auto_increment, vehicleModel VARCHAR (30) NOT NULL, первичный ключ (vehicleModelid) ) двигатель = InnoDB по умолчанию кодировка = latin1; – xeperrx

ответ

0

EDIT: Ваш текст усекается до 30 символов максимум. Вполне вероятно, что у вас есть две модели в пределах vehicle.model, которые после усечения имеют одинаковое значение.

Сначала проверьте, у вас уже есть запись в таблице. Ваш запрос, чтобы проверить, что появляется неправильно, так что вы бы использовать это:

SELECT * FROM vehicleModel WHERE vehicleModel = 'Express 2500 2WD Conversion Ca';

Вполне вероятно, что уже есть, что запись в таблице, поэтому вы не можете вставить дубликат.

Вы можете удалить эту запись или все записи внутри таблицы и попытать вставку снова, как:

DELETE FROM vehicleModel WHERE vehicleModel = 'Express 2500 2WD Conversion Ca'; 
INSERT INTO vehicleModel (vehicleModel) (SELECT DISTINCT model FROM vehicle ORDER BY model); 
+0

Я копирую/вставляю ваши заявления, все еще получая эту ошибку - – xeperrx

+0

Дублируемая запись «Экспресс 2500 2WD Conversion Ca» для ключа «VehicleModel» – xeperrx

+0

вы можете подтвердить, что таблица 'vehicleModel' пуста ? – Nicarus

Смежные вопросы