MySQL在插入时重复

MySQL在插入时重复,mysql,inner-join,insert-update,Mysql,Inner Join,Insert Update,第一桌 $sql = "CREATE TABLE if not exists mainInfo ( sku varchar(20) primary key not null, name varchar(20) not null, price int(30) not null, type int(2) not null )"; 第二桌 $sql="CREATE TABLE if NOT EXISTS properties ( size int(9), bWeight int(9), fHei

第一桌

  $sql = "CREATE TABLE if not exists mainInfo (
sku varchar(20) primary key not null,
name varchar(20) not null,
price int(30) not null,
type int(2) not null
)";
第二桌

$sql="CREATE TABLE if NOT EXISTS properties (
size int(9),
bWeight int(9),
fHeight int(9),
fWeight int(9),
fLenght int(9),
sku varchar(20) not null,
CONSTRAINT FK_mainInfoProperties FOREIGN KEY (sku) REFERENCES mainInfo(sku)
)";
内部联接表

      $sql = "CREATE TABLE if NOT EXISTS allInfo (
        sku varchar(20) primary key not null,
        name varchar(20) not null,
        price int(30) not null,
        type int(2) not null,
        size int(9),
        bWeight int(9),
        fHeight int(9),
        fWeight int(9),
        fLenght int(9)
         )";

       $sql = "INSERT INTO allInfo (sku, name, price, type, size, bWeight, 
       fHeight, fWeight, fLenght)
        SELECT mainInfo.sku, name, price, type, size, bWeight, fHeight, 
       fWeight, fLenght
        FROM mainInfo INNER JOIN properties
        ON mainInfo.sku = properties.sku";

我第一次使用这段代码时,它可以工作,但当我向第一个表和第二个表添加新行时,内部联接表不会更新它,为键“PRIMARY”提供重复条目如何更新此表添加新行,但保留已存在的行不变?

allInfo中的Suk字段标记为外键,并添加新的主键,如allInfo,以唯一标识记录

我认为您不需要第三个表。您可以使用简单连接轻松获得唯一记录

Select m.sku ,a.bWeight, a.fHeight, a.fWeight , a.fLenght from mainfon join properties a on m.sku=a.suk where a.suk=your_id

我建议两个只使用两个表,不要使用第二个表作为主键,这意味着只有一行具有特定sku(它们必须是唯一的)。
properties
表可能包含多个具有相同sku的行。您真的希望
allInfo
sku
作为主键吗?确实如此,但现在当我添加新信息时,上一个信息在数据库中重复。比如:如果我添加了entry_1,后面的entry_2,它会显示为entry_1 entry_1 entry_2,也许我每次添加新信息之前都会删除表?