mariaDB插入多行,其中2列不存在

iyfamqjs  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(100)

我知道类似的问题以前也有人问过,但我似乎找不到适合这种特殊情况的解决方案。
我想在mariaDB表中插入多行数据,其中的数据必须是唯一的(不包括主键)。
示例表:
| 注册ID|类标识符|使用者ID|
| - -|- -|- -|
| 一个|一个|2个|
| 2个|一个|三个|
| 三个|一个|四个|
| 四个|2个|2个|
| 五个|2个|七个|
因此,如果我想插入一些行,我不想重复已经存在的内容。
一般的想法是这样的:

INSERT INTO `enrollments` (`enrollmentsID`, `classID`, `userID`)  
VALUES (NULL,1,2),(NULL,1,3),(NULL,1,4),(NULL,1,5)
WHERE NOT EXISTS (  
    SELECT `enrollments`.`classID`, `enrollments`.`userID` 
    FROM `enrollments`)

在这里,用户ID 5将被插入,但用户ID 3和用户ID 4将被忽略。不幸的是,WHERE导致了问题...感谢您提供的任何帮助。

o8x7eapl

o8x7eapl1#

正如P.Salmon在评论中提到的,两列上的UNIQUE索引很可能是您所需要的。索引需要在两列上,而不是每列都有UNIQUE索引。

ALTER TABLE enrollments
ADD UNIQUE INDEX (`classID`,`userID`)

从那里你可以做INSERT INGORE INTO而不是INSERT INTO,这将只插入唯一的条目。

相关问题