我正在使用两个表即QuestionInsertQuestion_Papers运行sql查询。
各个表中的列如下:-

Table:-QuestionInsert
Columns:-QuestionNum,Question,Answer,CatId,SubCatId

Table:-Question_Papers
Columns:-QuestionNum



我想要一个SQL查询,该查询将从表QuestionInsert检索表Question_Papers中存在的QuestionNum的所有QuestionNum,Question,Answer。
另外,我想从表QuestionInsert中检索所有QuestionNum,Question,Answer,其中QuestionNum在表Question_Papers中不存在。


此数据显示在网格视图上。我正在使用的查询如下:-
第一个条件的查询是:

SELECT F.QuestionNum,
       F.Question,
       F.Answer
FROM QuestionInsert F
INNER JOIN Question_Papers FS ON F.[QuestionNum]=FS.QuestionNum
WHERE ((F.QuestionNum=FS.QuestionNum) AND (F.CatId='" +
DropDownList1.SelectedValue + "' And F.SubCatId='" + DropDownList3.SelectedValue + "'))
ORDER BY F.QuestionNum DESC;


另一个查询第二条件。是:-

SELECT F.QuestionNum,
       F.Question,
       F.Answer
FROM QuestionInsert F INNER JOIN Question_Papers FS ON F.[QuestionNum]!=FS.QuestionNum
WHERE ((F.QuestionNum!=FS.QuestionNum) AND (F.CatId='" + DropDownList1.SelectedValue + "'
And F.SubCatId='" + DropDownList3.SelectedValue + "'))
ORDER BY F.QuestionNum DESC


我的代码正在检索正确的信息,但如果QuestionNum表中存在同一Question_Papers的一行以上,则它将重复显示所有行。我想分别显示表Question_Papers中存在和不存在的唯一行。

请帮助我。

最佳答案

对于第二种情况,您可以尝试以下操作:

SELECT F.QuestionNum,F.Question,F.Answer
FROM QuestionInsert F
WHERE (F.CatId='" + DropDownList1.SelectedValue + "' And F.SubCatId='" + DropDownList3.SelectedValue + "')
AND F.QuestionNum NOT IN (SELECT QuestionNum FROM Question_Papers)
ORDER BY F.QuestionNum DESC


这是第一个条件:

SELECT F.QuestionNum,F.Question,F.Answer
FROM QuestionInsert F
WHERE (F.CatId='" + DropDownList1.SelectedValue + "'
AND F.SubCatId='" + DropDownList3.SelectedValue + "')
AND F.QuestionNum IN (SELECT QuestionNum FROM Question_Papers)
ORDER BY F.QuestionNum DESC";


但是,您的代码存在严重问题-您是否研究过SQL injection?有许多数据访问框架,例如Entity Framework,可以使您获得更好的发展。

10-06 13:42