次のことができます
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
| | ID |
------
| | 1 |
表 B
| | ID |
------
| | 2 |
表 C
| | ID |
------
| | 3 |
これがSQLFiddleのデモです