数据库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则不需要去除重复的行,因此可能会包含重复的数据。

相关推荐
banjin34 分钟前
AI驱动TDSQL-C Serverless 数据库技术实战营-ai学生选课系统数据分析
c语言·人工智能·serverless
赵渝强老师37 分钟前
【赵渝强老师】基于ZooKeeper实现Hadoop HA
大数据·hadoop·分布式·zookeeper
沫刃起37 分钟前
Codeforces Round 972 (Div. 2) C. Lazy Narek
数据结构·c++·算法
算力资源比较多2 小时前
人工智能(AI)的影响下人类的生活样子
人工智能·生活
QXH2000002 小时前
Leetcode—环形链表||
c语言·数据结构·算法·leetcode·链表
木鬼与槐2 小时前
MySQL高阶1831-每天的最大交易
数据库·mysql
zhangbin_2372 小时前
【Python机器学习】NLP信息提取——命名实体与关系
开发语言·人工智能·python·深度学习·机器学习·自然语言处理
Wils0nEdwards3 小时前
计算机视觉中,Pooling的作用
人工智能·计算机视觉
985小水博一枚呀3 小时前
【梯度消失|梯度爆炸】Vanishing Gradient|Exploding Gradient——为什么我的卷积神经网络会不好呢?
人工智能·python·深度学习·神经网络·计算机视觉·cnn·numpy
小灰灰爱代码3 小时前
C++——判断year是不是闰年。
数据结构·c++·算法