如何在 SQL 中为多个输入获取相应的数据,因为 IN 子句返回所有可能的记录而不是相应的记录

考虑这种情况。


表结构:(示例)


Id  grpnumber  subject  mark

1.  101.            Eng.       88

1.  101.            math.     93

2.   102.           Eng.        76

2.   102.           Math.     83

和查询:


Select *

from Records

where studentId IN (1,2) AND

      grpumber IN (101,102) AND

      subject IN('eng','math').

上面的查询返回四行,因为它返回两个学生的两个科目的分数,但我需要第一个(id = 1)学生的英语科目标记和第二个学生(id = 2)的数学标记。如何为此编写查询。


PS:我在准备好的语句中动态传递了这些输入(n 个输入)。


喵喔喔
浏览 96回答 2
2回答

素胚勾勒不出你

如果我了解您的问题,我相信您正在寻找的是参数化您的查询。这是一个可能的解决方案。由于我没有任何 DDL 或数据,因此我提供了自己的。我看到的表。  CREATE TABLE sample (    id          NUMBER,    grpnumber   NUMBER,    subject     VARCHAR2(255),    mark        NUMBER);表中的数据。REM INSERTING into SAMPLESET DEFINE OFF;Insert into SAMPLE (ID,GRPNUMBER,SUBJECT,MARK) values (1,101,'Eng',88);Insert into SAMPLE (ID,GRPNUMBER,SUBJECT,MARK) values (1,101,'Math',93);Insert into SAMPLE (ID,GRPNUMBER,SUBJECT,MARK) values (2,102,'Eng',76);Insert into SAMPLE (ID,GRPNUMBER,SUBJECT,MARK) values (2,102,'Math',83);使用绑定变量的潜在查询SELECT    id studentid,    grpnumber,    lower(subject) subject,    markFROM    sample sWHERE (s.id = :id1  AND lower(subject) = 'eng') OR      (s.id = :id2 AND lower(subject)  = 'math')提供给绑定变量的值是 .:id2 = 1:id1 = 2结果:"STUDENTID" "GRPNUMBER" "SUBJECT"   "MARK"       1      101        "math"       93       2      102         "eng"       76

慕姐8265434

基本上查询看起来像这样where (studentId = 1 AND subject = 'eng') OR       (studentId = 2 AND subject = 'math')如何使这种动态真正取决于应该动态的内容和方式......
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java