MYSQL 基于其他列的唯一列

MYSQL unique column based on other column

我有一个脚本,我使用 LOAD DATA INFILE REPLACE INTO 命令将 CSV 文件加载到 table。

文件来自不同的 "stores",所有不同的商店都进入这个 table。

我的问题是如何将两列组合起来,然后变成唯一的列,或者您可能有其他想法。

storeid = 每一行都不会是唯一的

code = 每个商店 id 都是唯一的

目标是将 csv 文件加载到 table 中,并在发生更改时根据商店 ID 和代码更新行。 当我为每个商店使用不同的数据库并将 code 作为唯一时,这一切都有效,但现在我想将所有商店都放在同一个数据库中。

正在合并列,例如1+123 = 1123 = new unique 最好的方法?

提前致谢

根据http://dev.mysql.com/doc/refman/5.7/en/load-data.html

If you specify REPLACE, input rows replace existing rows. 
In other words, rows that have the same value for a primary key or unique index as an existing row.

您应该在您的列上创建唯一索引:

CREATE UNIQUE INDEX name_of_the_index ON table_name (storeid, code);

这两列的组合主键也可以完成这项工作。

我最终使用了两个主键作为

CREATE TABLE stock(
  storeid int,
  code int,
  PRIMARY KEY (storeid , code)
);

它结合了两个字段,使它们成为一个独一无二的字段,似乎对我的测试有效。