TRUNCATE然后INSERT DISTINCT导致重复键

时间:2015-01-15 12:28:14

标签: mysql insert sql-insert insert-select

我希望我在这里只是一个白痴,但是我有一个截断表的查询,然后选择一些外键的所有可能组合并插入它们来制作个人资料。

我有 2 x 2 x 3 x 4 x 7 键可供选择,其中包含 336个不同组合。

如果我运行此选择,我会得到336行:

SELECT DISTINCT
    `contract_agreement_type`.`id`, 
    `contract_deposit`.`id`,
    `contract_length`.`id`, 
    `contract_maintenance_type`.`id`,
    `contract_mileage`.`id`
FROM `contract_agreement_type`, 
    `contract_deposit`,
    `contract_length`, 
    `contract_maintenance_type`,
    `contract_mileage`
哇哇,太棒了!但当我插入时,我最终得到 672 行?!为了检查我的数学是对的,我在5列上添加了一个索引,当我再次运行它时,我得到一个重复的键错误:

INSERT INTO `contract_profile`
    (
        `contract_agreement_type_id`, 
        `contract_deposit_id`,
        `contract_length_id`, 
        `contract_maintenance_type_id`,
        `contract_mileage_id`
    )
    SELECT DISTINCT
        `contract_agreement_type`.`id`, 
        `contract_deposit`.`id`,
        `contract_length`.`id`, 
        `contract_maintenance_type`.`id`,
        `contract_mileage`.`id`
    FROM `contract_agreement_type`, 
        `contract_deposit`,
        `contract_length`, 
        `contract_maintenance_type`,
        `contract_mileage`

# Duplicate entry '1-3-24-1-5' for key 'profile'

所以选择很好,但是插件会以某种方式复制数据 - 我做错了什么?!

0 个答案:

没有答案