Distinct 在这个查询中添加了任何值或者做了什么吗?

Distinct 在这个查询中添加了任何值或者做了什么吗?

假设 Users.Id 字段是唯一的自动递增的,我的主要问题是:在这个查询中,“Distinct”是否有任何作用,在这个特定的查询中使用它是否完全没有意义?

SELECT  DISTINCT users.id, CONCAT(users.firstname, ' ', users.surname) AS name FROM users 
WHERE users.id!=$me AND (LOWER(users.firstname) LIKE '$term%' AND (email='$email' OR username='$email'))

-

如果查询改为:

SELECT  DISTINCT users.surname, firstname, surname
FROM users WHERE surname = 'Smith''

那么我可能只会得到 Jane Smith 或 John Smith 作为结果,而不会得到他们两人或其他名叫 Smith 的人,对吗?

(最上面的查询是原文)

答案1

DISTINCT 子句从 select 查询的输出中删除重复记录。因此,如果查询中的任何 SELECT 列都是 UNIQUE,则没有必要使用 DISTINCT。它可能会降低性能,因为数据库服务器将尝试找出不存在的重复记录。在第一个查询中,由于您返回的是 Unique 用户 ID,因此即使您删除 Unique,结果也不会改变,您还应该看到更好的性能。

在第二个查询中,如果两个或多个用户有相同的名字,您最终会得到一个结果。

相关内容