亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 SQL 中為多個輸入獲取相應的數據,因為 IN 子句返回所有可能的記錄而不是相應的記錄

如何在 SQL 中為多個輸入獲取相應的數據,因為 IN 子句返回所有可能的記錄而不是相應的記錄

喵喔喔 2022-06-30 10:58:07
考慮這種情況。表結構:(示例)Id  grpnumber  subject  mark1.  101.            Eng.       881.  101.            math.     932.   102.           Eng.        762.   102.           Math.     83和查詢:Select *from Recordswhere studentId IN (1,2) AND      grpumber IN (101,102) AND      subject IN('eng','math').上面的查詢返回四行,因為它返回兩個學生的兩個科目的分數,但我需要第一個(id = 1)學生的英語科目標記和第二個學生(id = 2)的數學標記。如何為此編寫查詢。PS:我在準備好的語句中動態傳遞了這些輸入(n 個輸入)。
查看完整描述

2 回答

?
素胚勾勒不出你

TA貢獻1827條經驗 獲得超9個贊

如果我了解您的問題,我相信您正在尋找的是參數化您的查詢。這是一個可能的解決方案。由于我沒有任何 DDL 或數據,因此我提供了自己的。我看到的表。


  CREATE TABLE sample (

    id          NUMBER,

    grpnumber   NUMBER,

    subject     VARCHAR2(255),

    mark        NUMBER

);

表中的數據。


REM INSERTING into SAMPLE

SET 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,

    mark

FROM

    sample s

WHERE (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


查看完整回答
反對 回復 2022-06-30
?
慕姐8265434

TA貢獻1813條經驗 獲得超2個贊

基本上查詢看起來像這樣

where (studentId = 1 AND subject = 'eng') OR
      (studentId = 2 AND subject = 'math')

如何使這種動態真正取決于應該動態的內容和方式......


查看完整回答
反對 回復 2022-06-30
  • 2 回答
  • 0 關注
  • 93 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號