SQLite SELECT DISTINCT-删除结果集中的重复项
SQLite SELECT DISTINCT子句简介
DISTINCT子句是SELECT语句的可选子句。DISTINCT子句允许删除结果集中的重复行。
下面的语句说明了DISTINCT子句的语法:
SELECT DISTINCT select_list
FROM table;
在这种语法中:
SQLite认为空值是重复的。如果将DISTINCT子句用于具有空值的列,SQLite将保留一行空值。
在数据库理论中,如果一列包含空值,这意味着我们没有关于该列特定记录的信息,或者该信息不适用。
例如,如果客户的电话号码为空值,这意味着我们在记录客户信息时没有关于客户电话号码的信息,或者客户可能根本没有电话号码。
SQLite选择不同的例子
我们将使用示例数据库中的customers表进行演示。
假设您想知道客户所在的城市,可以使用SELECT语句从customers表的city列获取数据,如下所示:
SELECT city
FROM customers
ORDER BY city;
试试看
它返回59行。几乎没有重复行,如Berlin London和Mountain View要删除这些重复行,请使用DISTINCT子句,如下所示:
SELECT DISTINCT city
FROM customers
ORDER BY city;
试试看
它返回53行,因为DISTINCT子句删除了6个重复行。
SQLite在多个列上选择DISTINCT
以下声明查找所有客户所在的城市和国家/地区。
SELECT
city,
country
FROM
customers
ORDER BY
country;
试试看
结果集包含重复的城市和国家,如上图所示的巴西圣保罗。
要删除重复的城市和国家,请对城市和国家列应用DISTINCT子句,如以下查询所示:
SELECT DISTINCT
city,
country
FROM
customers
ORDER BY
country;
以下是部分输出:
如前所述,SQLite使用城市和国家的组合来评估副本。
SQLite SELECT DISTINCT带有空示例
此语句从customers表中返回客户的公司名称。
SELECT company
FROM customers;
试试看
它返回59行,其中包含许多空值。
现在,如果对语句应用DISTINCT子句,它将只保留一行NULL值。
见以下声明:
SELECT DISTINCT company
FROM customers;
试试看
该语句返回11行,其中一个值为空。
请注意,如果从表中选择列列表,并希望获得某些列的唯一组合,则可以使用GROUP BY子句。
在本教程中,您学习了如何使用SQLite SELECT DISTINCT子句从结果集中删除重复行。