当前位置: 首页 > 面试题库 >

SQL语句未选择

乜思淼
2023-03-14
问题内容

我在C#项目中将SQLServer用于故障排除程序,并且我有一个包含ID,Question,QuestionId,Solution和Rank的表。我希望有一个问题的多个解决方案,并且程序将选择排名最高的解决方案,该解决方案仅由最高的数字来选择,该数字在每次正确时都会递增。为此,我有以下SQL语句:

sql = "SELECT Solution FROM dbo.Questions WHERE Rank=(SELECT MAX(Rank) FROM 
dbo.Questions) AND QuestionId =" + questionId;

当我只有一个可用的解决方案时,它可以很好地工作,但是当我有多个解决方案时,它却不能。


问题答案:

您需要适当地参数化您的查询。Bobby Tables:防止SQL注入的指南

sql = "SELECT Solution FROM dbo.Questions q WHERE Rank=(SELECT MAX(Rank) FROM 
dbo.Questions i where i.QuestionId = q.QuestionId) AND q.QuestionId =" + questionId;

这可以确保max(rank)子查询返回的结果是您要查询max(rank)解决方案的结果QuestionId

如果您只想要一个,也可以执行以下操作Solution

select top 1 Solution 
from dbo.Questions q 
where QuestionId = @QuestionId
order by [Rank] desc


 类似资料:
  • 如何在SQL Select语句上返回布尔值? 我尝试了以下代码: 并且它只返回如果存在于表中。如果表中不存在UserID,我希望它返回。

  • 问题内容: 我有一张调查答案表,类似: 并且我想创建一个查询,该查询将为我提供该表的结果摘要,从而允许我设置相关的日期范围。我下面的声明非常有效: 但是我不确定是否可以做得更好,以及在哪里添加日期范围过滤功能。 问题答案: 来自多刺的诺曼的第一个查询将给出这样的结果: 仅将几组不同的结果分组。我假设您想按问题将是/否的总数分类。在这种情况下,您必须执行以下操作: 结果:

  • 问题内容: 我有此查询返回我的ID 但我收到此语句的语法错误 我如何正确更新从第一条语句中检索到的ID 问题答案: 正确的:

  • 主要内容:删除单个记录,删除多个记录,删除所有记录SQL DELETE语句用于从表中删除行。 通常,语句从表中删除一个或多个记录。 语法 假设有一张: 的结构和行记录得到以下结果: EMP_ID EMP_NAME CITY SALARY AGE 1 Angelina Chicago 200000 30 2 Robert Austin 300000 26 3 Christian Denver 100000 42 4 Kristen Washingt

  • 主要内容:更新单个记录,更新多条记录,不使用WHERE子句SQL UPDATE语句用于修改数据库中已有的数据。 子句中的条件决定要更新哪一行。 语法 假设有一个表,它的结构和数据记录如下所示 - EMP_ID EMP_NAME CITY SALARY AGE 1 Angelina Chicago 200000 30 2 Robert Austin 300000 26 3 Christian Denver 100000 42 4 Kristen Washi

  • 主要内容:1.不指定列名,2.通过指定列名称SQL INSERT语句用于在表中插入单个或多个数据。 在SQL中,可以通过以下两种方式插入数据: 不指定列名称 通过指定列名称 假设有一个表: 的结构和数据记录如下 - EMP_ID EMP_NAME CITY SALARY AGE 1 Angelina Chicago 200000 30 2 Robert Austin 300000 26 3 Christian Denver 100000 4