MySQL的不同的行或不同的领域

epe*_*leg 5 mysql distinct

两者之间是否存在性能差异或其他差异:

SELECT distinct(users.id),2 as someFieldName ,0 as someOtherFieldName
From users join ...
Run Code Online (Sandbox Code Playgroud)

和这个:

SELECT distinct users.id ,2 as someFieldName ,0 as someOtherFieldName
From users join ...
Run Code Online (Sandbox Code Playgroud)

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

我正在使用mysql。

egg*_*yal 5

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

SELECT DISTINCT (users.id), (2) AS someFieldName, (0) AS someOtherFieldName
Run Code Online (Sandbox Code Playgroud)

它们都是等价的。

如果您想避免对常量列进行比较,则可以改用GROUP BY

SELECT   users.id, 2 AS someFieldName, 0 AS someOtherFieldName
FROM     users JOIN ...
GROUP BY users.id
Run Code Online (Sandbox Code Playgroud)


dav*_*vek 5

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

从SELECT文档

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