35

I want to use distinct & top in the same time , i did

SELECT distinct TOP 10 * FROM TableA

but i still have a duplicate PersonId so i tought to do :

SELECT distinct (personID) TOP 10 * FROM TableA but the syntax is wrong , so i wonder if there is any solution

thanks,

4

11 に答える 11

55

SELECT *すべてのレコードを取り込む を使用しています。真の DISTINCT のみを使用する場合は、個別の値を受け取りたい列のみをリストします。複数の列がある場合、それらのすべての列を組み合わせて 1 つの個別のレコードを作成します。

SELECT distinct TOP 10 personID 
FROM TableA

ORDER BYthis がない場合、最初の 10 レコードが順不同で返されることに注意してください。結果は、クエリを実行するたびに異なる場合があります。

于 2013-03-18T14:28:28.587 に答える
8

さまざまな人物に対して 10 個のランダムなレコードが必要なようです。これを試して:

select t.*
from (select t.*,
             row_number() over (partition by personid order by (select NULL)) as seqnum
      from t
     ) t
where seqnum = 1

ただし、一般に、を使用する場合は、「トップ」の意味を指定するためにtopも使用する必要があります。order by

于 2013-03-18T15:51:16.420 に答える
2

テーブルサンプル 10 から個別の個人 ID を選択する

これはテラデータで機能します

于 2017-02-28T13:27:46.963 に答える
-3

私はそれを修正しました

select distinct  personid from (SELECT  TOP 10 * FROM TableA)
于 2013-03-18T15:23:12.200 に答える