2013-12-08 15 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'。 –