SQL计数(*)和不同

Nit*_*eti 19 sql

为什么我们不能count(distinct *)在SQL中使用?在计算所有不同的行?

Chr*_*ter 34

select count(*) from (select distinct * from MyTable) as T
Run Code Online (Sandbox Code Playgroud)

虽然我强烈建议您重新考虑使用的任何查询DISTINCT.在很大比例的情况下,GROUP BY更合适(更快).

编辑:在阅读了问题评论之后,我应该指出,您永远不应该要求DBMS做更多的工作而不是实际需要做的结果.如果您事先知道表中没有任何重复的行,则不要使用DISTINCT.

  • 在Oracle DISTINCT和GROUP BY上具有相同的执行计划,因为DISTINCT使用GROUP BY实现.所以应该没有区别. (2认同)

Jas*_*yon 10

您可以选择表格中的所有列并按...分组

SELECT column1, column2, column3, count(*)
FROM someTable
GROUP BY column1, column2, column3
Run Code Online (Sandbox Code Playgroud)

  • 但这实际上并没有得到问题所问的内容。 (2认同)

sil*_*ent 5

为什么不?

select 
  count(distinct name)
from 
  people
Run Code Online (Sandbox Code Playgroud)