5

这之间是否有性能或其他差异:

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 ...

结果集用作插入语句的一部分,并且由于连接,选择可能会多次返回相同的用户 ID(此处未显示)

我正在使用mysql。

4

2 回答 2

6

没有所谓的“不同领域”。您的第一个语法与第二个语法相同:括号仅围绕字段表达式。你也可以写:

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
于 2012-10-24T08:15:26.393 回答
5

没有区别,因为DISTINCT在这种情况下只对行进行操作。

来自 SELECT 文档

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

于 2012-10-24T08:15:41.980 回答