2013-12-08 18 views
-2

代碼我有一個字符串,它是SqlCommand這樣一個CommandText字符串的Sql背後

string SqlCopySyntax = "insert into Question ([Body], [O1], [O2], [O3], [O4], [ocorrect], [oselected], [time],[bookrange], [UserID], [CourseID], [code]) select [Body], [O1], [O2], [O3], [O4], [ocorrect], [oselected], [time],[bookrange], @userid, [CourseID], [code] from Question where UserID = 9999999999 and [email protected]"; 

我現在我想用一個新的選擇命令替換選擇部分。 這是新的選擇命令:

with q as (select q.*, row_number() over (partition by [Bookrange], [level] order by newid()) as seqnum from Question q) select * from q where UserID = 9999999999 and [email protected]; 

我應該如何替換?

+0

你是什麼意思?所選列應與您要插入的表格匹配。 – OldProgrammer

+0

第二個代碼的結果與第一個代碼中的select命令相同。我只是不知道如何複製 –

+1

WITH在你的第二個查詢中返回一個額外的列--seqnum--所以下面的select * fromq有一個額外的列。你似乎沒有對seqnum做任何事情? – MartW

回答

0

你想查詢的形式是:

with q as (
     . . . 
    ) 
insert into Question(. . .) 
    select . . . 

也就是說,with那張insert之前,而不是select之前。

+0

對不起,我不能:\ '字符串SqlCopySyntax =「與q(as(select q。*,row_number()over(partition by [Bookrange],[level] order by newid())從問題q)中選擇* from q其中UserID = 9999999999且code = @ selectedcode)插入問題([Body],[O1],[O2],[O3],[O4],[ocorrect],[選中],[time],[bookrange],[UserID],[CourseID],[code])「;' –

+0

但這不起作用 –

+1

@MahdiHesari。 。 。 「as」之前沒有父母。 'select'在'insert'之後*,不在之前。首先是'with',然後是'insert',然後是'select'。 –