您可以执行以下操作
SELECT
(
(SELECT COUNT(*) FROM A WHERE id = 3)
+ (SELECT COUNT(*) FROM B WHERE id = 3)
+ (SELECT COUNT(*) FROM C WHERE id = 3)
) unique_count
这是SQLFiddle演示
现在,与其手动查找重复项和分配 id,不如考虑通过使用单独的表进行排序auto_increment
和简单的触发器,使它们在表中唯一。
您的数据库架构可能看起来像
CREATE TABLE id_seq (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
CREATE TABLE A (id INT NOT NULL);
CREATE TABLE B (id INT NOT NULL);
CREATE TABLE C (id INT NOT NULL);
触发器
DELIMITER $$
CREATE TRIGGER tg_a_insert
BEFORE INSERT ON a
FOR EACH ROW
BEGIN
INSERT INTO id_seq VALUES (NULL);
SET NEW.id = LAST_INSERT_ID();
END$$
DELIMITER ;
它们对于所有表都是相同的。只需更改触发器和表的名称
现在你可以INSERT
到任何一张桌子,比如
INSERT INTO A (id) VALUES (0);
INSERT INTO B (id) VALUES (0);
INSERT INTO C (id) VALUES (0);
你会得到
表 A
| 身份证 |
------
| 1 |
表 B
| 身份证 |
------
| 2 |
表 C
| 身份证 |
------
| 3 |
这是SQLFiddle演示