[英]SELECT DISTINCT and UNION MYSQL
SELECT DISTINCT S.City , C.City FROM Suppliers S,Customers C 有什么区别;
和 SELECT City FROM Suppliers UNION SELECT City FROM Customers;
从查询本身也可以得到一个粗略的想法。 无论如何,以下是一个简单的解释:
SELECT City FROM Suppliers
UNION
SELECT City FROM Customers;
上述查询将两个选择查询合并为一个合并结果。 结果具有来自两个表中“城市”列的值。
SELECT City FROM Suppliers
:这将从供应商表中检索城市列下的所有值。
SELECT City FROM Customers
:这将从 Customer 表中检索 City 列下的所有值。
UNION
:这将组合来自两个查询的值并输出单个结果。 特点是它不关心重复。 结果表可以有重复的值。
请参阅以下示例以获得清晰的理解。
供应商表| 供应商编号 | 姓名 | 城市 | |-----------|------------------|----------- ----| | 1 | 大卫 | 纽约 | | 2 | 约翰 | 莫斯科 | | 3 | 西蒙 | 华盛顿 |
客户表| 客户 ID | 姓名 | 城市 | |-----------|------------------|----------- ----| | 1 | 瑞安 | 科伦坡 | | 2 | 乔| 华盛顿 | | 3 | 柯尔特 | 华盛顿 |
查询结果| 城市 | |-------------------| | 纽约 | | 莫斯科 | | 华盛顿 | | 科伦坡 | | 华盛顿 | | 华盛顿 |
在上面的结果中,你可以看到华盛顿重复了。
SELECT DISTINCT S.City , C.City
FROM Suppliers S,Customers C;
与 UNION 相比,使用 DISTINCT 关键字会导致仅从查询中检索到的值中过滤唯一值。
如果我们考虑您给出的上述查询,它表示要在供应商和客户表的城市列下检索唯一值。 尽管它们在两个表中,但它不会再次重复相同的值。
因此,考虑到我上面提供的示例表,结果如下:
查询结果| 城市 | |-------------------| | 纽约 | | 莫斯科 | | 华盛顿 | | 科伦坡 |
你可以看到,现在只有一个华盛顿在那里。 我们可以观察到从查询中只检索到唯一值。
因此,正如我上面提到的,两个查询之间的主要区别是使用 UNIQUE 的查询检索所有数据,但使用 DISTINCT 的查询仅检索唯一值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.