我想用不同的&顶的同时,我也使用DISTINCT和TOP在同一时间
SELECT distinct TOP 10 * FROM TableA
但我仍然有一个重复的PERSONID,所以我因子评分做到:
SELECT distinct (personID) TOP 10 * FROM TableA
但语法是错误的,所以我不知道是否有任何解决方案
感谢,
我想用不同的&顶的同时,我也使用DISTINCT和TOP在同一时间
SELECT distinct TOP 10 * FROM TableA
但我仍然有一个重复的PERSONID,所以我因子评分做到:
SELECT distinct (personID) TOP 10 * FROM TableA
但语法是错误的,所以我不知道是否有任何解决方案
感谢,
您正在使用的是所有记录中的SELECT *
。如果您想仅使用真正的DISTINCT列出您想要接收不同值的列。如果你有多个列,那么所有这些列组合成一个独特的记录。
SELECT distinct TOP 10 personID
FROM TableA
注意,没有ORDER BY
这将在没有特定的顺序返回前10个记录。每次运行查询时,结果可能会有所不同。
我固定它,我没有
select distinct personid from (SELECT TOP 10 * FROM TableA)
没有结果的订单可能会有所不同。即使是带有PK的表格也不能保证在没有订单的情况下返回相同的订单。 – Paparazzi 2013-03-18 15:29:53
如果您在前10名结果中有相同的人物身份,那么这将不起作用,您只会得到9个结果。就像'从表A中选择不同的前10名personID'一样简单 – 2013-03-18 17:18:29
你似乎想为不同的人10个随机记录。使用top
时,你应该也可以使用order by
到指定的“顶”的意思,
select t.*
from (select t.*,
row_number() over (partition by personid order by (select NULL)) as seqnum
from t
) t
where seqnum = 1
在一般情况下,虽然:试试这个。
选择表A样本不同PERSONID 10
这个作品在Teradata的
它的工作原理简单,如果你使用的查询是这样的:
SELECT DISTINCT TOP 2 name FROM [ATTENDANCE] ;
在上面的查询,name
是列名和[ATTENDANCE]
是table_name。您也可以使用WHERE
来制作过滤条件。
如果目标是选择每PERSONID的顶部1的记录,然后使用
select * from TableA group by personid
既然你是“按组”做一个,它将返回每列,但会忽略(不显示)任何具有相同personid的附加行
如果您只想选择一个“personID”(如果您有重复行),您将执行什么操作? – 2013-03-18 14:36:00