MySQL在插入时重复

时间:2018-06-30 14:37:18

标签: 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),
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”,如何更新此表以添加新行行,但保持原样不动?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我认为您不需要第三张桌子。您可以使用简单的join轻松获得唯一记录。

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

我建议两个只使用两个表,不要使用第二个表