Сравнение списков

Зачастую необходимо сравнить два списка номеров/кодов и найти различия. Например, сличить номера по банку и по сайту.

Быстрый способ сделать это с помощью MySQL:

Создаем таблицы сравнения

schema.sql
CREATE TABLE `t_bank` (
  `id` VARCHAR(64) NOT NULL DEFAULT '',
  UNIQUE KEY `NewIndex1` (`id`)
);
 
CREATE TABLE `t_site` (
  `id` VARCHAR(64) NOT NULL DEFAULT '',
  UNIQUE KEY `NewIndex1` (`id`)
);

Вставляем данные

insert.sql
INSERT IGNORE INTO `t_site` VALUES
('some data 1'),
('some data 2'),
('some data 3');
 
INSERT IGNORE INTO `t_bank` VALUES
('some data 1'),
('some data 2');

Сравниваем

нет в банке

SELECT * FROM t_site
LEFT JOIN t_bank ON t_site.id = t_bank.id
WHERE t_bank.id IS NULL;
+-------------+------+
| id          | id   |
+-------------+------+
| some data 3 | NULL |
+-------------+------+

нет на сайте

SELECT * FROM t_bank
LEFT JOIN t_site ON t_site.id = t_bank.id
WHERE t_site.id IS NULL;
Empty set (0.00 sec)
Печать/экспорт