2012-10-24 108 views
4

是否有这之间的性能或其它区别:MySQL的不同行或不同领域

SELECT distinct(users.id),2 as someFieldName ,0 as someOtherFieldName 
From users join ... 

这:

SELECT distinct users.id ,2 as someFieldName ,0 as someOtherFieldName 
From users join ... 

结果集作为INSERT语句的一部分,选择威力由于连接多次返回相同的用户ID(此处未显示)

我正在使用mysql。

回答

4

没有“独特的领域”这样的东西。您的第一个语法与第二个语法的解析方式相同:括号仅包围字段表达式。你也可以这样写:

SELECT DISTINCT (users.id), (2) AS someFieldName, (0) AS someOtherFieldName 

它们都是等价的。

如果你想避免您不断列的比较,你也可以使用GROUP BY

SELECT users.id, 2 AS someFieldName, 0 AS someOtherFieldName 
FROM  users JOIN ... 
GROUP BY users.id 
3

有在这种情况下只对行工作没有差别DISTINCT

From the SELECT docs

的ALL和DISTINCT选项指定重复的行是否应该 返回。 ALL(默认值)指定返回的所有匹配行应为 ,包括重复项。 DISTINCT指定从结果集中删除 重复行。指定 选项是错误的。 DISTINCTROW是DISTINCT的同义词。