我在另一个名为“ workers”的数据库上创建了新表:
CREATE TABLE workers (
ID_WORKER int(11) NOT NULL,
FNAME varchar(20) NOT NULL,
LNAME varchar(20) NOT NULL,
WORKERS_GROUP varchar(20) NOT NULL,
POSITION varchar(50) NOT NULL,
CARD_NUMBER varchar(30) NOT NULL
)
在“ AUTO_INCREMENT”上设置了“ ID_WORKER”列。然后第一次我只插入一条记录:
INSERT INTO workers (FNAME, LNAME, WORKERS_GROUP, POSITION, CARD_NUMBER)
VALUES ('Paul', 'King', 'IT', 'Programmer', '');
但是在下一次,我尝试插入另一种方法(我将描述自己尝试过的方法),并且重复了一些。
我尝试了什么?
我已经尝试了至少3种没有重复的方法:
1)通过插入忽略到:
INSERT IGNORE INTO workers (FNAME, LNAME, WORKERS_GROUP, POSITION, CARD_NUMBER)
2)替换为:
REPLACE INTO workers (FNAME, LNAME, WORKERS_GROUP, POSITION, CARD_NUMBER)
VALUES ('Paul', 'King', 'IT', 'Programmer', '');
3)通过INSERT INTO ...在重复的密钥更新上:
INSERT INTO workers (FNAME, LNAME, WORKERS_GROUP, POSITION, CARD_NUMBER)
VALUES ('Paul', 'King', 'IT', 'Programmer', '')
ON DUPLICATE KEY UPDATE FNAME = 'Paul' AND LNAME = 'King' AND WORKERS_GROUP = 'IT' AND POSITION = 'Programmer' AND CARD_NUMBER = ''
它们都没有起作用。我不知道或不知道在哪里可以找到它们。任何想法都需要任何帮助。
编辑
关于重复项可以全部复制,但是在这种情况下,具有相同FNAME, LNAME
的工人可以位于同一WORKER_GROUP
中,因为他/她必须拥有另一个{{1 }}和POSITION
。
答案 0 :(得分:-1)
INSERT INTO workers (FNAME, LNAME, WORKERS_GROUP, POSITION, CARD_NUMBER)
SELECT DISTINCT w1.FNAME, w1.LNAME, w1.WORKERS_GROUP, w1.POSITION, w1.CARD_NUMBER
FROM workers w1
WHERE NOT EXISTS (SELECT 1
FROM workers w2
WHERE w2.FNAME = w1.FNAME
AND w2.LNAME= w1.LNAME
AND w2.WORKERS_GROUP= w1.WORKERS_GROUP
AND w2.POSITION = w1.POSITION
AND s2.CARD_NUMBER = w1.CARD_NUMBER)