【发布时间】:2020-11-18 11:32:55
【问题描述】:
我想在包含这些列的question 表中插入
C#_T_F_Id, C#_T_F_Q, C#_T_F_Choices, C#_Mcq_Id, C#_MCQ_Q, C#_Choices
执行Generate_Exame程序后我该怎么办:
create procedure Generate_Exame
@course_id int
as
if @course_id = 600
begin
insert into [dbo].[Question](C#_T_F_Id, C#_T_F_Q, C#_T_F_Choices,
C#_Mcq_Id, C#_MCQ_Q, C#_Choices)
select *
from
(select top(3)
T.C#_T_F_Id, T.C#_T_F_Q, T.C#_T_F_Choices
from
C#_T_F T
order by
newid()) as t1
union all
select *
from
(select top(7)
C.C#_Mcq_Id C#_Q_id, C.C#_MCQ_Q C#_question, C.C#_Choices Choices
from
C#_MCQ C
order by
newid()) as t2)
end
【问题讨论】:
-
错误信息很清楚。您声明要插入 6 列,但您的
select仅返回 5 列。 -
再读查询你会发现
Select返回6列` TC#_T_F_Id ,TC#_T_F_Q , TC#_T_F_Choices,CC#_Mcq_Id C#_Q_id , CC#_MCQ_QC#_question ,CC# _Choices 选择` -
Union 不会将列添加在一起,而是将行添加在一起,因此现在通过您的编辑,您尝试将 3 列插入 6 列。
-
我想添加这些列 ``` TC#_T_F_Id ,TC#_T_F_Q , TC#_T_F_Choices,CC#_Mcq_Id,C#_Q_id , CC#_MCQ_Q,C#_question ,CC#_Choices ```到
question表,其中包含在联合之后我应该写什么查询的列 -
听起来您想加入 2 个随机行表(而不是合并它们)。然而,最好的办法是展示一些示例数据和预期结果——这是清楚地解释 SQL 问题的最简单方法。
标签: sql asp.net .net sql-server database