帶附加條件的NewID 用法 downmoon

2021-04-19 03:57:15 字數 1500 閱讀 2073

前天碰到一業務需求,難倒了團隊成員,

表結構如下:

create

table

[dbo].

[product](

[p_id][

bigint

]identity(1

,1) not

null

,[p_name][

nvarchar](

255) 

null

,[categoryid1][

int]

null

,[categoryid2][

int]

null

,[categoryid3][

int]

null,

[p_singleintro][

nvarchar](

200) 

null,

[loginid][

nvarchar](

50) 

null

,constraint

[pk_product

]primary

keyclustered

([p_id

]asc

)

需要隨機列出表中每位使用者(loginid)的乙個產品,每次列出時隨機值不重複。

於是考慮用newid()

select

max(p_id)

asp_id,loginid 

from

product

group

byloginid 

order

bynewid()

結果每次取到的p_id都是相同的! 不符合需求

再修改如下:

select

p_id,loginid,p_name,p_singleintro 

from

product 

where

p_id 

in(select

( select

top1

p_id 

from

product 

asb 

where

b.loginid 

=c.loginid 

order

bynewid

() ) 

asp_id 

from

( select

top10000

a.loginid 

from

product 

asa 

group

bya.loginid 

order

bynewid

() ) 

asc 

)--假定取前10000個使用者

ok!!!!(就是效能寒磣了點!^_^ )

感謝塵塵 。

在sql 2005/2008下可以這麼做。

助人等於自助!   [email protected]

帶附加條件的NewID 用法

前天碰到一業務需求,難倒了團隊成員,表結構如下 create table dbo product p id bigint identity 1 1 not null p name nvarchar 255 null categoryid1 int null categoryid2 int null ...

帶附加條件的NewID 用法 downmoon

前天碰到一業務需求,難倒了團隊成員,表結構如下 table dbo product p id bigint identity 1 1 not null p name nvarchar 255 null categoryid1 int null categoryid2 int null categor...

帶附加條件的NewID 用法 downmoon

前天碰到一業務需求,難倒了團隊成員,表結構如下 table dbo product p id bigint identity 1 1 not null p name nvarchar 255 null categoryid1 int null categoryid2 int null categor...