MS SQL Server 中的 DISTINCT 子句
dbmsdatabaseprogramming
DISTINCT 子句用于从表中删除重复条目。此子句只能与 select 语句一起使用。有时,列包含一些重复值,因此要删除它,我们使用 DISTINCT 子句,因为它将仅返回列中存在的不同值。当提供一个或多个表达式时,DISTINCT 子句将返回唯一值或唯一值的组合。如果为空,DISTINCT 子句不会忽略它并返回 null 作为值。
语法
SELECT DISTINCT expressions FROM table [WHERE conditions];
这里,
表达式是从中提取数据的列。
table 是要对其执行操作的表名。
conditions 是可选的,用于选择特定数据。
conditions 1:当不存在空值时
示例
CREATE TABLE Customer(ID INT PRIMARY KEY, Name VARCHAR(50), Country VARCHAR(50), Age int(2)); #Table created INSERT INTO Customer (ID, Name, Country, Age) VALUES (1, 'Monu', 'India', 23), (2, 'Aman ', 'Australia', 25), (3, 'Naman', 'Sri lanka', 24), (4, 'Aditya', 'Australia', 26), (5, 'Raman , 'Spain', 22); #data inserted Select * from Customer;#To show table
输出
Customer
ID Name Country Age 1 Monu India 23 2 Aman Australia 25 3 Naman Sri Lanka 24 4 Aditya Australia 26 5 Raman Spain 22
示例 1
删除重复的国家/地区。
SELECT DISTINCT Country FROM Customer;
输出
Country India Australia Sri Lanka Spain
表中存在重复项(Australia),此处将其删除。
示例 2
当不存在重复项时
SELECT DISTINCT name FROM Customer;
输出
Name Monu Aman Naman Aditya Raman
此处,name 列中没有重复项,因此返回相同的行。
条件 2:当存在空值时
示例
CREATE TABLE Customer(ID INT PRIMARY KEY, Name VARCHAR(50), Country VARCHAR(50), Age int(2)); #Table created INSERT INTO Customer (ID, Name, Country, Age) VALUES (1, 'Monu', 'India', 23), (2, 'Aman ', 'Australia', null), (3, 'Naman', 'null', 24), (4, 'Aditya', 'null', null) #data inserted Select * from Customer;#To show table
输出
Customer
ID Name Country Age 1 Monu India 23 2 Aman Australia 3 Naman 24 4 Aditya
示例:出现 null 值时的不同子句
示例
SELECT DISTINCT Name, Country, Age FROM Customer;
输出
Name Country Age Monu India 23 Aman Australia Naman 24 Aditya
条件 3:Distinct 与 group by
示例
CREATE TABLE customer ( id INT, name VARCHAR(50), age INT, country VARCHAR(50), email id VARCHAR(100) ); INSERT INTO customer (id, name, age, country, email id) VALUES (1, 'monu', 23, 'india', 'monu@gmail. com'), (2, 'aman', 20, NULL, 'aman@gmail. com'), (3, 'monu', 23, 'canada', NULL), (4, 'raman', NULL, NULL, NULL);
输出
id name age city email id 1 monu 23 India monu@gmail.com 2 aman 20 aman@gmail.com 3 monu 23 Canada 4 raman
在 DISTINCT 的情形下
示例
SELECT DISTINCT name, city FROM customer;
输出
name city monu India aman monu Canada raman
在 groups by 的情形下
示例
SELECT name, age FROM customer GROUP BY name, age;
输出
name age monu 23 aman 20 raman
结论
本文包含一个 distinct 子句,用于从表中删除重复数据。有三个条件来解释它。首先,当不存在空值时,如果有重复值,则删除重复项,否则返回相同的值。其次,当存在空值时,Distinct 子句会删除其他空值,并且只显示一个。第三是 group by 与 distinct,除了查询语法外,两者几乎相同。