回答

收藏

SQL语句未选择

技术问答 技术问答 317 人阅读 | 0 人回复 | 2023-09-12

我在C#项目中将SQL; w, d2 z; P5 Z) ]- t
Server用于故障排除程序,我有一个包含ID,Question,QuestionId,Solution和Rank表。我希望有多个问题解决方案,程序将选择最高的解决方案。解决方案仅由最高数字选择,每次正确时数字都会增加。为此,我有以下内容SQL语句:; l+ B+ [% g! B+ r% {
sql = "SELECT Solution FROM dbo.Questions WHERE Rank=(SELECT MAX(Rank) FROM dbo.Questions) AND QuestionId ="   questionId;当我只有一个可用的解决方案时,它可以很好地工作,但当我有多个解决方案时,它不能。& ]+ f. r5 _8 K) \1 F+ }: w
                                                               
9 |" J. |, I) L) O4 g( K9 u+ _/ g    解决方案:                                                               
" n! B  s. ~+ e# D6 M                                                                您需要适当地参数您的查询。Bobby Tables:防止SQL注入的指南
  `2 Y6 [$ [/ o$ lsql = "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。
; P) M( \9 f$ R) h( v4 H8 J如果您只想要一个,也可以执行以下操作Solution:
! v( h9 |$ k# p& n& H# |' ?5 M) u3 Eselect top 1 Solution from dbo.Questions q where QuestionId = @QuestionIdorder by [Rank] desc
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则