2013-06-20 23 views
0

我有一個表列T1與列ID(主鍵,varchar),名稱(varchar),值(數字)和鍵(數字)。我有一個字符串數組,其中包括ID和我想要檢索所有記錄那些來自TABLE T1的字符串數組中的id在單個查詢中。我如何在oracle中編寫這個查詢?如何檢索特定列等於一組字符串的db中的記錄?

我目前使用一個for循環和獲取記錄:

for(String id: idList) 
{ 
    //Query to get record one by one (Select * from t1 where ID='id') 
} 

你可以建議我一個查詢來檢索一個查詢所有這些值?

回答

1

使用以下查詢

select * from t1 where id in ('id1', 'id2', 'id3') 

要得到的ArrayList到格式,做上述使用PHP以下

StringBuilder sb = New StringBuilder(); 
for(String id: idList) 
{ 
    sb.append("'"+id+"',") 
} 
sb.deleteCharAt(sb.length() -1); 
sb.toString(); 
+0

的問題是,所有的IDS都是字符串的ArrayList。我如何將它放在窗體中('id1','id2','id3')? – user2077648

+0

已更新的答案。 –

1
//Prep the query string 
//--------------------------------- 

    $strQ =""; 
    $len = count($idList); 

    $strQ = "'".$idList[0]."'"; 

    for($i=1; $i<$len; $i++){ 
     $strQ += " or ID = '".$idList[$i]."'"; 
    } 

//Now Da Query 
//--------------------------------------- 

"Select * from t1 where ID= ".$strQ; 

//--------------------- 

我已經解釋噠......

+0

你可以添加註釋到你的代碼,所以我可以理解邏輯,因爲我不知道PHP和我目前正在使用Java,這將是非常有用的 – user2077648

0

試試這個

List<Long> itemIDs = new ArrayList<Long>(); 

itemIDs.add(10); .... .... AuthService.deletePracticeAppMenu(itemIDs,selectedPractice.getID());


public void deletePracticeAppMenu(List<Long> prAppMenuIDs, Long practiceID) { 
    String query = "delete from PracticeAppMenu where PrAppMenuID in (:appMenuIDs) and practiceID = :pracid "; 
    Query q = getCurrentSession().createQuery(query); 
    q.setParameterList("appMenuIDs", prAppMenuIDs); 
    q.setParameter("pracid", practiceID); 
    q.executeUpdate(); 
} 
相關問題