📜  MariaDB相交运算符(1)

📅  最后修改于: 2023-12-03 15:02:51.993000             🧑  作者: Mango

MariaDB 相交运算符

相交运算符用于将两个SELECT语句的结果合并为一组结果,并返回这两个结果集的共同部分。在MariaDB中,相交运算符使用INTERSECT关键字来表示。

语法
SELECT column1[, column2, ...]
FROM table1
[WHERE condition]
INTERSECT
SELECT column1[, column2, ...]
FROM table2
[WHERE condition];
  • column1, column2, …:要返回的列名,用逗号分隔。
  • table1:第一个SELECT语句查询的表。
  • condition:可选项,用于过滤查询的结果。
  • table2:第二个SELECT语句查询的表。
示例

为了演示INTERSECT运算符,我们使用以下两个表:

CREATE TABLE `table1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `age` int(11) NOT NULL,
  PRIMARY KEY (`id`)
);

CREATE TABLE `table2` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `gender` varchar(10) NOT NULL,
  PRIMARY KEY (`id`)
);

INSERT INTO `table1` (`name`, `age`) VALUES
('John', 25),
('Mary', 30),
('Peter', 35),
('David', 40);

INSERT INTO `table2` (`name`, `gender`) VALUES
('John', 'M'),
('Peter', 'M'),
('Alice', 'F');
示例1:找出两个表中都存在的姓名
SELECT `name` FROM `table1`
INTERSECT
SELECT `name` FROM `table2`;

输出结果为:

+------+
| name |
+------+
| John |
| Peter |
+------+
示例2:找出年龄在30岁以下,且性别为女性的人员姓名
SELECT `name` FROM `table1`
WHERE `age` < 30
INTERSECT
SELECT `name` FROM `table2`
WHERE `gender` = 'F';

输出结果为空。

注意事项
  • INTERSECT运算符用于合并两个查询结果的共同部分,并返回这些记录。
  • INTERSECT运算符要求两个查询结果的列数相同,并且相应的列应具有相同的数据类型或可以进行隐式转换。
  • INTERSECT运算符的运算过程将去除重复记录,因此不会出现相同的记录。
  • INTERSECT运算符不支持在子查询中使用。