use*_*282 16 sql t-sql sql-server
我想在同一时间使用distinct&top,我做到了
SELECT distinct TOP 10 * FROM TableA
但我仍然有一个重复的PersonId所以我应该这样做:
SELECT distinct (personID) TOP 10 * FROM TableA
但语法错误,所以我想知道是否有任何解决方案
谢谢,
Mat*_*che 34
你正在使用一个SELECT *
拉入所有记录的东西.如果要仅使用真正的DISTINCT列出要接收其不同值的列.如果您有多列,则所有这些列组合在一起构成一条不同的记录.
SELECT distinct TOP 10 personID
FROM TableA
Run Code Online (Sandbox Code Playgroud)
请注意,如果没有ORDER BY
这个,将返回前10个记录,没有特定的顺序.每次运行查询时结果可能不同.
Aru*_*zhi 10
如果您使用这样的查询,它的工作原理很简单:
SELECT DISTINCT TOP 2 name FROM [ATTENDANCE] ;
Run Code Online (Sandbox Code Playgroud)
在上面的查询中,name
是column_name,[ATTENDANCE]
是table_name。
您还可以使用WHERE
它来制定过滤条件。
您似乎想要为不同的人提供 10 条随机记录。尝试这个:
select t.*
from (select t.*,
row_number() over (partition by personid order by (select NULL)) as seqnum
from t
) t
where seqnum = 1
Run Code Online (Sandbox Code Playgroud)
但是,一般而言,在使用时,top
您还应该使用 anorder by
来指定“顶部”的含义。