不使用子查询的不同行数

squ*_*man 11 t-sql sql-server count distinct

假设我有Table1,它有重复的行(忘记它没有主键......)是否可以在不使用JOIN,子查询或CTE的情况下重写以下内容,也无需拼写出类似于某些内容的列.通过...分组?

SELECT COUNT(*)
FROM (
    SELECT DISTINCT * FROM Table1
) T1
Run Code Online (Sandbox Code Playgroud)

awr*_*t18 11

你可以做这样的事情.

SELECT Count(DISTINCT ProductName) FROM Products
Run Code Online (Sandbox Code Playgroud)

但如果你想要一个完全不同的记录计数,那么你将不得不使用你提到的其他选项之一.

如果你想做一些你在问题中建议的事情,那么这意味着你的表中有重复的记录.

如果你没有重复的记录,SELECT DISTINCT * from table 那么没有相同的记录是相同的.


Pet*_*hia 8

不,这是不可能的.

如果您受框架/查询工具/其他任何限制,不能使用子查询,并且不能拼写出GROUP BY中的每个列名,那么您就是SOL.

如果您不受框架/查询工具/任何限制,则没有理由使用子查询.