Создадим две таблицы в MySQL
CREATE TABLE IF NOT EXISTS `productA` ( `id` int unsigned NOT NULL, `name` text NOT NULL, PRIMARY KEY (`id`) ); INSERT INTO `productA` (`id`, `name`) VALUES ('1', 'Груша'), ('2', 'Яблоко'), ('3', 'Апельсин'), ('4', 'Арбуз'), ('5', 'Дыня'); CREATE TABLE IF NOT EXISTS `productB` ( `id` int unsigned NOT NULL, `name` text NOT NULL, PRIMARY KEY (`id`) ); INSERT INTO `productB` (`id`, `name`) VALUES ('1', 'Груша'), ('2', 'Яблоко'), ('3', 'Апельсин'), ('4', 'Арбуз'), ('5', 'Картофель'), ('6', 'Петрушка'), ('7', 'Мандарин');
Пересечение и соединение данных из двух таблиц в MySQL — INNER JOIN:
SELECT * FROM producta INNER JOIN productb ON producta.name = productb.name;
Результат
Операция простого пересечения выборок из двух таблиц (как и в операциях над множествами):
SELECT name FROM producta INTERSECT SELECT name FROM productb;
Результат
Левостороннее и правостороннее объединение (в теории множеств это разность) данных в MySQL слева LEFT (справа оператор — RIGHT):
SELECT * FROM producta LEFT OUTER JOIN productb ON producta.name = productb.name WHERE productb.id IS null;
Результат
FULL OUTER JOIN in MySQL (объединение и соединение данных в MySQL)
SELECT * FROM producta LEFT JOIN productb ON producta.name = productb.name UNION SELECT * FROM producta RIGHT JOIN productb ON producta.name = productb.name;
Результат
Операция простого объединения выборок из двух таблиц (как и в операциях над множествами):
SELECT name FROM producta UNION SELECT name FROM productb;
Результат
Декартово произведение в MySQL CROSS JOIN
SELECT * FROM producta CROSS JOIN productb;
Результат