这是我的情况:我有 2 张桌子,patient
and study
.
每个表都有自己的 PK,使用自动增量。
就我而言,pat_id 应该是唯一的。它没有在数据库级别声明为唯一,因为它在某些用途中可能不是唯一的(它不是自制系统)。我找到了如何配置系统以将 pat_id 视为唯一,但是我现在需要清理重复患者的数据库并将研究表中的重复患者重新链接到剩余的唯一患者,然后删除重复的患者。
Patient
table:
CREATE TABLE `patient` (
`pk` BIGINT(20) NOT NULL AUTO_INCREMENT,
`pat_id` VARCHAR(250) COLLATE latin1_bin DEFAULT NULL,
...
`pat_name` VARCHAR(250) COLLATE latin1_bin DEFAULT NULL,
...
`pat_custom1` VARCHAR(250) COLLATE latin1_bin DEFAULT NULL
....
PRIMARY KEY (`pk`)
)ENGINE=InnoDB;
学习表:
CREATE TABLE `study` (
`pk` BIGINT(20) NOT NULL AUTO_INCREMENT,
`patient_fk` BIGINT(20) DEFAULT NULL,
...
PRIMARY KEY (`pk`),
...
CONSTRAINT `patient_fk` FOREIGN KEY (`patient_fk`) REFERENCES `patient` (`pk`)
)ENGINE=InnoDB;
我发现了一些类似的问题,但不完全相同的问题,特别是它缺少外键与剩余独特患者的链接。
重复条目的清理更新 https://stackoverflow.com/questions/24433306/cleanup-update-for-duplicate-entries
仅更新 MySQL 中重复条目的第一条记录 https://stackoverflow.com/questions/7620038/update-only-first-record-from-duplicate-entries-in-mysql