繁体   English   中英

SELECT DISTINCT 和 UNION MYSQL

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM