数据库SQL Server列拼接Join和Union

文章目录

SQL Server中, JOINUNION是两种不同的操作,它们用于合并来自两个或多个表的数据。

JOIN

JOIN操作用于将两个或多个表中的行结合起来,基于它们之间的某种关系。SQL Server支持多种类型的JOIN

  • INNER JOIN:只返回两个表中连接条件相匹配的行。
  • LEFT JOIN (或 LEFT OUTER JOIN):返回左表中的所有行,即使右表中没有匹配的行。右表中不匹配的行将为NULL。
  • RIGHT JOIN (或 RIGHT OUTER JOIN):返回右表中的所有行,即使左表中没有匹配的行。左表中不匹配的行将为NULL。
  • FULL JOIN (或 FULL OUTER JOIN):返回左表和右表中的行,只要其中一个表存在匹配。不匹配的行在另一侧为NULL。
  • CROSS JOIN:返回两个表的笛卡尔积,即第一个表中的每一行与第二个表中的每一行组合。
JOIN的基本语法如下:
sql 复制代码
SELECT columns
FROM table1
JOIN_TYPE table2
ON table1.column_name = table2.column_name;
UNION

UNION操作用于合并两个或多个SELECT语句的结果集,但与JOIN不同,UNION操作要求所有合并的列数和数据类型必须相同。

  • UNION:返回不同的(唯一的)行。默认情况下,UNION会去除重复的行。
  • UNION ALL:返回所有行,包括重复的行。
UNION的基本语法如下:
sql 复制代码
SELECT columns
FROM table1
UNION [ALL]
SELECT columns
FROM table2;
  • 示例
    假设有两个表EmployeesDepartments
sql 复制代码
CREATE TABLE Employees (
    EmployeeID int,
    Name varchar(255),
    DepartmentID int
);

CREATE TABLE Departments (
    DepartmentID int,
    DepartmentName varchar(255)
);
  • 使用JOIN来获取员工及其部门名称:
sql 复制代码
SELECT Employees.Name, Departments.DepartmentName
FROM Employees
INNER JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;
  • 使用UNION来合并两个查询的结果集:
sql 复制代码
SELECT Name FROM Employees
UNION
SELECT DepartmentName FROM Departments;

请注意,UNION要求两个查询选择的列数相同,并且相应的列数据类型兼容。而UNION ALL则不需要去除重复的行,因此可能会包含重复的数据。

相关推荐
草莓熊Lotso1 小时前
Linux 文件描述符与重定向实战:从原理到 minishell 实现
android·linux·运维·服务器·数据库·c++·人工智能
大模型玩家七七2 小时前
基于语义切分 vs 基于结构切分的实际差异
java·开发语言·数据库·安全·batch
历程里程碑2 小时前
Linux22 文件系统
linux·运维·c语言·开发语言·数据结构·c++·算法
岳麓丹枫0012 小时前
PostgreSQL 中 pg_wal 目录里的 .ready .done .history 文件的生命周期
数据库·postgresql
Coder_Boy_3 小时前
技术发展的核心规律是「加法打底,减法优化,重构平衡」
人工智能·spring boot·spring·重构
会飞的老朱5 小时前
医药集团数智化转型,智能综合管理平台激活集团管理新效能
大数据·人工智能·oa协同办公
聆风吟º6 小时前
CANN runtime 实战指南:异构计算场景中运行时组件的部署、调优与扩展技巧
人工智能·神经网络·cann·异构计算
寻星探路6 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
Codebee8 小时前
能力中心 (Agent SkillCenter):开启AI技能管理新时代
人工智能