我试图将外键添加到用一堆虚拟数据播种的测试数据库中。我可以去MySQL外面,导出一个缺少ID的列表,并在Python中生成一堆插入语句但是我想知道是否有办法在MySQL中处理这个问题
ALTER TABLE `kalos`.`award`
CHANGE COLUMN `awardee_user_id` `awardee_user_id` INT(11) NULL ;
ALTER TABLE `kalos`.`award`
ADD CONSTRAINT `fk_award_3`
FOREIGN KEY (`awardee_user_id`)
REFERENCES `kalos`.`user` (`user_id`)
ON DELETE RESTRICT
ON UPDATE CASCADE;
我已尝试弄乱ON DELETE
和ON UPDATE
属性,但它肯定不会让我应用它,因为{{1}中有用户ID award
表中不存在的表(3000个中只有大约200个)。就像我说用Python做这个很简单,但是我已经碰到过几次这个问题了,我很好奇看看MySQL是否可以自己处理这样的事情。
答案 0 :(得分:0)
我想出来了,这非常简单。
DELETE FROM t1
WHERE
t1.id NOT IN (SELECT
id
FROM
(SELECT
tmp.id AS id
FROM
t1
INNER JOIN t2 ON t1.id = t2.id) as tmp)
这将从t1中删除t2中没有相应记录的任何行