Sql 我应该在查询中何时使用distinct?
这是一个一般性问题: 有没有人告诉我如何知道何时应该在查询中使用distinct?我正在努力理解什么时候确切地使用它。我倾向于在我不需要的时候使用它,而不是在我需要的时候Sql 我应该在查询中何时使用distinct?,sql,distinct,Sql,Distinct,这是一个一般性问题: 有没有人告诉我如何知道何时应该在查询中使用distinct?我正在努力理解什么时候确切地使用它。我倾向于在我不需要的时候使用它,而不是在我需要的时候 非常感谢大家。基本上,没有什么理由使用select distinct,尽管它有时很方便 如果可以避免,就要避免!SQL在删除重复项时会产生开销,即使没有重复项。因此,select distinct比select慢 通常使用group by编写select distinct更合适,因为您通常希望聚合某些列,例如最大日期/时间 这
非常感谢大家。基本上,没有什么理由使用select distinct,尽管它有时很方便 如果可以避免,就要避免!SQL在删除重复项时会产生开销,即使没有重复项。因此,select distinct比select慢 通常使用group by编写select distinct更合适,因为您通常希望聚合某些列,例如最大日期/时间
这就是说,它可以是方便的速记,所以不应该完全避免,只是很少使用。关于何时使用DISTINCT没有一般规则,它是基于您的要求,即当您在一列中有两个相同的值,但您只需要一个值,所以您将使用DISTINCT 假设你有一个城市中银行和分行的列表。但你需要知道有多少独特的银行在这个城市经营,然后你会写
select distinct bank_name from city;
当我希望确保查询中的行不重复时,我会使用distinct,因为我选择的字段组合可能有重复的记录。通常,这是在选择一组不包含主键/唯一键且所选字段组合在一起时不保证唯一的列时发生的 例如,如果我选择今年购买的客户发送信函给,并且客户在一年内可以有多个订单,并且我希望确保每个人和地址只发送一封信函,我将使用Distinct确保每个唯一的客户名称/地址组合出现一次
--could return multiple records for repeat customers if Distinct was not present
Select Distinct BillingName, BillingAddress
from Orders
where OrderDate > '2019-08-01'
如果我有一个员工表,其中包含员工姓名和地址的列街道、城市、州/普罗旺斯、国家,您知道从员工选择国家和从员工选择不同国家的区别吗?如果我想知道我的员工代表了多少不同的国家,该怎么办?第一个查询将对同一个国家进行多次计数?是的。它将从每一行中选择,即显示国家/地区列。第二个查询不会显示重复项,因此,如果我有来自7个不同国家的100名员工,则只会显示7行。选择countdistinct Country from Employee将返回7。该表的名称为city,它描述了银行和分行?这不是一个很好的例子。如果你有一个银行表格,上面描述了各种银行及其分支机构的地址,会怎么样?然后从bank_表中选择不同的bank_名称,其中city='Oshkosh'