MySQL的坑真不是一般的多。
需求是,原来的表:ID(自增列,主键)、列1、列2,希望去掉ID列,把列1列2作为联合主键。这里我用了一种比较繁琐但容易理解的方法。因为MySQL中select into语句莫名其妙的不好用,我只能先建表再插入值。
建一个和最终目标结构一致的临时表(不用care我的外键约束,具体问题具体分析):
create table temp1(
words varchar(100) not null,
hs int not null,
primary key (words,hs),
foreign key (hs) references hs_category (hs)
);
把原来表这两列的所有值放进来:
insert into temp1(words,hs)
select words,hs from lookup;
其实现在删掉旧表就已经搞定了,但我希望新表的名字和旧表一样,所以还要麻烦一下。
# 删掉旧表
drop table lookup;
然后再从临时表转移到最终的新表:
create table lookup(
words varchar(100) not null,
hs int not null,
primary key (words,hs),
foreign key (hs) references hs_category (hs)
);
insert into lookup (words,hs) select words,hs from temp1;
drop table temp1;