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

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

Быстрый способ сделать это с помощью 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');

Сравниваем

compare.sql
-- Что нет в банке
SELECT * FROM t_site
LEFT JOIN t_bank ON t_site.id = t_bank.id
WHERE t_bank.id IS NULL;
 
-- что нет на сайте
SELECT * FROM t_bank
LEFT JOIN t_site ON t_site.id = t_bank.id
WHERE t_site.id IS NULL;